问题描述
我有一个问题,AJAX 返回 0 总是!
我已经做了所有的书,不知道有什么问题吗?请帮忙!!
这是我的 Ajax 调用:
//Pass data through AJAX
var amountToConvert = price;
jQuery.ajax({
type:"POST",
url: "../../wp-admin/admin-ajax.php", // our PHP handler file
action: "ajaxConversion",
data: {
amount: amountToConvert
},
success:function(data){
alert(data);
},
error: function(errorThrown){
alert(errorThrown);
}
});
return false;
而 function.php 中的函数是:
function ajaxConversion(){
$amount = mysql_real_escape_string($_POST['amount']);
echo $amount;
die();
};
add_action('wp_ajax_nopriv_ajaxConversion', 'ajaxConversion');
add_action('wp_ajax_ajaxConversion', 'ajaxConversion');
最佳解决方案
你可以在数据中放置动作 (ajaxConversion) 并检查吗?
jQuery.ajax({
type:"POST",
url: ajaxurl,
data: {
action: "ajaxConversion",
amount: amountToConvert
},
success:function(data){
alert(data);
},
error: function(errorThrown){
alert(errorThrown);
}
});
次佳解决方案
在 AJAX 函数的末尾使用 wp_die();
来解决问题。
例如
add_action( 'wp_ajax_my_ajax_function', 'my_ajax_function' );
function my_ajax_function(){
echo json_encode($myvar);
wp_die();
}
第三种解决方案
对我而言,诀窍是添加 wp_ajax_nopriv
动作。当我登录 WP 管理员时,我在一个浏览器上测试了脚本,然后在 Chrome 中尝试了相同的脚本,并意识到脚本不起作用。在我放 wp_ajax_nopriv
之后,一切都开始工作了。 🙂
add_action( 'wp_ajax_nopriv_erase_uploaded_images', 'erase_uploaded_images' );
add_action( 'wp_ajax_erase_uploaded_images', 'erase_uploaded_images' );
function erase_uploaded_images() {
$attach_id = filter_input( INPUT_POST, 'attach_id' );
wp_delete_attachment( $attach_id );
if ( isset( $_SESSION['uploaded_images'] ) ) {
$array_attachments = $_SESSION['uploaded_images'];
if ( ( $key = array_search( $attach_id, $array_attachments ) ) !== false ) {
unset( $array_attachments[$key] );
}
$_SESSION['uploaded_images'] = $array_attachments;
}
wp_die();
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。