我在使用ajax函数时遇到了一个问题:
window.setInterval(liveDrop, 2000);
这会每隔2秒触发我的ajax调用,并检查是否需要更新站点中的某些内容。
这个函数运行得很好,但是当我打开类似的东西时functions.php
(不仅如此,而且作为示例)
echo \'TEST\';
我的ajax请求已运行
window.setInterval
开始打印此“测试”,然后
echo teste
实际上超出了ajax请求中“action:my\\u function”的函数范围。
我的问题是,我在ajax调用中接收到外部命令。
其他信息:-我正在使用wp_die()
, wp_send_json_success
.. etc-我在正确的挂钩中注册了我的函数(如果没有echo \'test\'
或任何admin_init_hook
)
有人见过这种情况吗?
更新时间:
我的ajax代码:
function liveDrop(){
last_drop = parseInt($(\'.item-drop-area\').first().data(\'id\'));
$.ajax({
url: ajax_request.ajax_url,
type: \'GET\',
data: {
\'action\': \'live_drop\',
\'last_item\': last_drop
},
})
.done(function(response) {
if( typeof response.data.has_new_live_drop != \'undefined\' && response.data.has_new_live_drop === true ){
$(\'.dropped-area\').prepend(response.data.item_droped);
$(\'.drop-item-inserted\').show(\'slow\');
last_drop += 1;
$(\'.item-drop-area\').last().remove();
}
});
}
window.setInterval(liveDrop, 2000);
我的php函数:
public function __construct( ){
add_action(\'wp_ajax_live_drop\', array($this, \'live_drop\'));
add_action(\'wp_ajax_nopriv_live_drop\', array($this,\'live_drop\'));
}
public function live_drop(){
global $wpdb;
$table_name = $wpdb->prefix . \'sorted_items\';
$next_item = intval($_GET[\'last_item\']) + 1;
$new_items_check = $wpdb->get_results("SELECT id,user_id, item_id, crate_id FROM $table_name WHERE id = $next_item AND TIME_TO_SEC(TIMEDIFF(current_timestamp, date)) > 15 LIMIT 1");
if(!empty($new_items_check)){
$html = \'\';
foreach ($new_items_check as $item) {
$crate_img = get_the_post_thumbnail_url( $item->crate_id , \'medium\' );
$item_img = get_the_post_thumbnail( $item->item_id, \'live-drop\', [\'class\' => \'item-image-livedrop\'] );
$item_name = get_the_title( $item->item_id );
$user_avatar = get_user_meta( $item->user_id, \'steam_avatar\', true );
$username = get_user_meta( $item->user_id, \'steam_personaname\', true);
$steam_id = get_user_meta( $item->user_id, \'steam_steamid\', true);
$profile_link = home_url() . \'/member/\' . $steam_id;
$html .= \'<div class="item-drop-area drop-item-inserted" data-id="\' . $item->id . \'">\';
$html .= \'<div class="item-live-droped">\';
$html .= \'<a class="see-user-profile" href="\' . $profile_link . \'">\';
$html .= \'<img class="crate-image-livedrop" src="\' . $crate_img . \'" />\';
$html .= $item_img;
$html .= \'<img class="user-avatar-livedrop" src="\' . $user_avatar . \'"/>\';
$html .= \'<p class="drop-item-name">\' . $item_name . \'</p>\';
$html .= \'<div class="item-live-dropped-hover">\';
$html .= \'<p class="user-live-drop">\' . $username . \'</p>\';
$html .= \'</div>\';
$html .= \'</a>\';
$html .= \'</div>\';
$html .= \'</div>\';
}
$data = array(
\'has_new_live_drop\' => true,
\'item_droped\' => $html
);
wp_send_json_success( $data, 200 );
}
wp_send_json_error( false, 200 );
}
这段代码工作得很好,但如果我对函数进行了“echo teste”。php,这段代码会出现在这个ajax请求的响应上,这就是问题所在,每隔2秒他不会显示函数的答案,他会显示函数外部的信息,就像一条echo语句。