問題描述
我有一個問題,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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。