PHP:如何提取ajax数组响应

时间:2010-11-20 07:30:45

标签: php javascript jquery ajax arrays

我从php url获取数组格式的ajax响应。如何在jQuery中提取数组响应值? 供参考:

PHP数组是:

$response = array('msg' => 'Hello', 'html' => '<b>Good bye</b>');

我在我的ajax响应中得到了$ response数组。即。

var promo = "promo=45fdf4684sfd";
$.ajax({
    type: "POST",
    url: baseJsUrl + "/users/calc_discount",
    data: promo,
    success: function (msg) { // I am getting $response here as ajax response.
        //alert(msg);

        // Here I want to check whether response is in array format or not. if it is in array format, I want to extract msg here and want to use response array values.
    }
});

让我知道答案。 感谢。

4 个答案:

答案 0 :(得分:8)

您应该使用json_encode()回复$response

您应该在发送给dataType: 'json'的对象文字中设置$.ajax()

然后,您可以使用成功回调中的点运算符使用JavaScript本地访问它...

function(msg) {
    alert(msg.html);
}
顺便说一下,这行...

$response = array(['msg'] => 'Hello', 'html' => '<b>Good bye</b>');

...... isn't valid PHP。从第一个键中删除括号。

答案 1 :(得分:1)

我最喜欢的解决方案是使用PHP函数json_encode()对数组进行编码,以便jquery很乐意解析它。

答案 2 :(得分:0)

我认为你的意思是JSON响应,如下所示:

{"msg":"Hello","html":"<b>Good bye<\/b>"}

这实际上是一个本机JS对象,所以你可以像这样使用它:

success: function(msg){
   alert(msg.msg);
   alert(msg.html);
}

如果需要,您还可以使用jQuery.each()函数循环遍历JSON对象的所有属性:

jQuery.each(msg, function(key, val) {
  alert(key + "=" + val);
});

答案 3 :(得分:0)

如果您无法控制PHP输出,则可以使用其他方法来获取结果。 另一种解决方案是使用http://phpjs.org/库。在这里你可以找到JS中提供的许多JS功能。用法也与PHP相同。所以我觉得如果你从那里得到json_encode / json_decode并使用它,那么它可以很容易地解决你的问题。

请记住,您只能编译所需的功能。在您的情况下,它是json_encode和json_decode。无需下载整个库。用于编译图书馆的网址:http://phpjs.org/packages/configure