我从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.
}
});
让我知道答案。 感谢。
答案 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