簡體   English   中英

訪問從PHP腳本傳遞到AJAX成功函數的多維數組

[英]Accessing a multidimensional array passed from a PHP script to a AJAX success function

我正在將多維數組傳遞給我的AJAX成功函數,如下所示:

$response = array();

$response['message']['name'] = $name;
$response['message']['phone'] = $phone;

echo json_encode( $response );
die();

現在,我在使用jQuery訪問此數據時遇到問題。 我試過使用以下方法輸出數據,但在Chrome中卻無法正常工作,但在FireFox,IE,Safari或Chrome移動設備中卻無法使用。

jQuery( '#message' ).html( data.message.name );

控制台顯示此TypeError: data.message is undefined

希望有人能幫助我知道我要去哪里。

我的AJAX呼叫和成功功能:

jQuery.ajax({
    type: 'POST',
    url: ajax_url,
    dataType: 'json',
    cache: false,
    data: {
        'action': 'quote',
        'security': security,
        'name': name,
        'phone': phone,
},
success:function(data) {

    if ( data.message.name == 'Ben' ) {
        jQuery( '#message' ).html( data.message.name );         
    } else {
        // do nothing
    }

},

更新:我指出了WordPress的問題。 特別是,對於未登錄的用戶執行wp_ajax_nopriv_(action)必須使用它。 我只使用wp_ajax_(action) ,僅對已登錄的用戶執行。 注意我是使用Chrome登錄的,而不是使用FF,IE和Safari登錄的,這完全解釋了為什么我在使用這些瀏覽器時看到未定義的控制台消息。

參考: http : //codex.wordpress.org/AJAX_in_Plugins

用以下行擴展您的PHP代碼,這些行會將JSON標頭發送到檢索數據:

header('Content-type: application/json');

您是否嘗試過追蹤?

data['message']['name'];

也嘗試輸出您的data變量

console.log(data);

找出它是數組還是對象。

在瀏覽器側的developertools中,您可能會找到“ network標簽。 它將向您顯示帶有錯誤,請求和響應數據的AJAX請求...

您是否嘗試過實現這樣的錯誤處理程序?

jQuery.ajax({
    ...
}).fail(function(jqXHR, textStatus, errorThrown) {
    console.log(jqXHR, textStatus, errorThrown);
});

從文檔中:

jqXHR.fail(function(jqXHR,textStatus,errorThrown){});

錯誤回調選項的替代構造。.fail()方法替換了不建議使用的.error()方法。 有關實現的詳細信息,請參考deferred.fail()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM