访问从PHP脚本传递到AJAX成功函数的多维数组

时间:2014-06-17 21:33:45

标签: javascript php jquery ajax multidimensional-array

我将多维数组传递给我的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

1 个答案:

答案 0 :(得分:0)

使用以下行将PHP代码扩展到检索数据:

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

你有没有尝试过?

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

还尝试使用

输出data变量
console.log(data);

找出它是一个数组还是一个对象。

在您的browseride个开发工具栏中,您可能会找到network标签。它将向您显示包含错误,请求和响应数据的AJAX请求......

您是否尝试过像这样的错误处理程序?

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

来自文档:

  

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

     

错误回调选项的替代构造,.fail()方法替换了不推荐使用的.error()方法。有关实现的详细信息,请参阅deferred.fail()。