在這方面有人会帮助我吗? 我的問题是,当我Ajax請求wordPress時,当我在控製台中記錄该响應時,它顯示
error/complete
不是
response
jQuery(document).ready(function($) {
$(".pincode_search_field").on('keyup', function(event) {
event.preventDefault();
var ajax_url = pin_shop.ajax_url;
var pincode_search_field = $(this).val();
var nonce = $(this).data('nonce');
$.ajax({
url: ajax_url,
type: 'POST',
data: {
'action' : 'pincode_search_field',
'nonce' : nonce,
'search_query' : pincode_search_field,
},
})
.done(function(response) {
console.log(response.database_result);
console.log('success');
})
.fail(function() {
console.log("error");
});
});
});
這是我的PHP代碼。
add_action( "wp_ajax_pincode_search_field", 'pincode_search_field' );
add_action( "wp_ajax_nopriv_pincode_search_field", 'pincode_search_field' );
function pincode_search_field() {
global $wpdb;
$pincode = $_REQUEST['search_query'];
if ( wp_verify_nonce( $_REQUEST['nonce'], "pin_shop_nonce") ) {
$result['database_result'] = $wpdb->get_results("SELECT shop_id FROM cs_shop_details WHERE shop_pincode = $pincode");
$result = json_encode( $result );
echo $result;
die();
}
}
這是入队指令碼。
add_action( 'wp_enqueue_scripts', function(){
wp_enqueue_script( 'pin-js', plugins_url() . '/pin-shop/inc/pin.js', array('jquery') );
wp_localize_script( 'pin-js', 'pin_shop', array(
'ajax_url' => admin_url('admin-ajax.php'),
) );
});
編輯:這是控製台日志中的結果。
最新回復
- 2020-5-271 #
相似問題
- wordpress:从輔助API設置JSON web令牌作為wordPress上的安全cookiewordpressplugindevelopmentwordpressajaxwordpresscookieswordpressthirdpartyapplications2021-01-05 15:26
- wordpress:AJAX表單發佈返迴0wordpressplugindevelopmentwordpressajax2021-01-02 07:55
- wordpress:使用類进行插件開發-公共和私有回撥wordpresscustomposttypeswordpressphpwordpressplugindevelopmentwordpresshookswordpressoop2021-01-02 06:25
- wordpress:如何將自定義HTML添加到存档頁面帖子的內容中?wordpresscustomposttypeswordpressphpwordpressplugindevelopmentwordpressfilterswordpressarchives2020-12-18 08:23
- wordpress:使用Backbone JS API檢索自定義帖子型別的URL問题wordpresscustomposttypeswordpressplugindevelopmentwordpressjavascriptwordpressrestapiwordpressbackbone2020-11-28 02:52
- wordpress:$ wpdb使用ajax但顯示ajax錯誤而不是成功wordpresspluginswordpressplugindevelopmentwordpressajax2020-11-17 00:53
根据jQuery文件,
dataType: 'json'
支援.那就是正在被 returned 並由jQuery解析為您的成功函式.需要更多資訊来解決您的問题。做威兹威兹 正確解決我看到您的佇列中有這个。pin_shop.ajax_url
? 如果没有,那就是您的第一个問题. (要檢查此,//site.com/wp-admin/admin-ajax.php
在您的$ .ajax通话之前。(此外,您是否註意到您没有將結果返迴给AJAX呼叫方?我在下面的代碼中記下了它。)
下一步,您可能不会發送隨機數.檢查console.log(ajax_url);
解決現時問题? (要檢查此,$(this).data('nonce')
就在您呼叫$ .ajax之前。)最後,您可能無法在服務器端正確解決隨機數.要进行原始檢查,請在您的PHP代碼中註釋掉几行,然後查看成功/完成是否已記錄到控製台,如下所示:
最後,您的SQL中可能存在錯誤(如table
console.log(nonce);
不存在或cs_shop_details
该表中不存在该欄位).要进行檢查,請註釋掉pincode
並設置$result['database_result'] = ...
以便返迴空結果(並確保$result=array()
被迴應)。(此外,我是新手,因此,如果其中有什麼帮助,不胜感激可以帮助我提高分數,以便我發表評論。)
$result
进行了一些除錯,發現問题是PHP函式没有迴顯json編碼的結果:添加 EDIT: 就在echo $result;
之前die()
在帮助除錯JSON响應中.首先,請註意 EDIT 2: 將返迴一个陣列.您將该陣列放入$ results陣列的database_result索引中.所以,您的結構現在看起来像這樣……因此,此陣列是返迴给
$wpdb->get_results()
的陣列 .通過.done()
相應地訪問此陣列 JSON物件傳遞给相關函式.我覺得像response
或response.database_result[0]["shop_id"]
response.database_result[0].shop_id