首頁>Web>source

在這方面有人会帮助我吗? 我的問题是,当我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-27
    1 #

    根据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代碼中註釋掉几行,然後查看成功/完成是否已記錄到控製台,如下所示:

     函式pincode_search_field(){
         全域性$ wpdb;
     //如果(wp_verify_nonce($ _REQUEST ['nonce']," pin_shop_nonce")){
             $ result ['database_result'] = $ wpdb->get_results("从cs_shop_details的SELECT ID中,PIN碼='192124'");
             $ result = json_encode($ result);
             死();
     //}
     }
    

    最後,您的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索引中.所以,您的結構現在看起来像這樣……

     陣列(
         'database_result'=>陣列(
             [0] =>陣列(
                 " shop_id" =>1
             )
             ...(此處是其他結果,按順序編製索引)
         )
     )
    

    因此,此陣列是返迴给 $wpdb->get_results()的陣列 .通過 .done()相應地訪問此陣列   JSON物件傳遞给相關函式.我覺得像 response   或 response.database_result[0]["shop_id"]

    response.database_result[0].shop_id

  • wordpress:古腾堡塊-具有几種帖子型別的template_lock
  • drupal:不允许序列化"關闭"