如何在JQuery中从PHP生成的JSON中获取数据

时间:2011-12-09 00:47:33

标签: php jquery ajax json undefined

在jquery成功之后使用响应参数上的Alert将显示我需要的值,问题是用k / v选择它们。我不知道这是不是与json格式不兼容的问题或者是什么,来自php。如果我试图通过使用键来获取值,则没有任何事情发生(没有警报)或警报会说“未定义”。

相关代码:

JQuery的:

var curr = $(this).val();
// alert(curr);
$.ajax({
type: 'GET',
url: 'CurrencyResponse.php?q='+curr,
contentType: "application/json; charset=utf-8",
success: function(response) {
var items = response.d;
// alert(response); this will display some json key value from server
$.each(items, function (index, item) {
// alert(item.msg); or updating some div tag here, eventless
});
},

PHP:

<?php
// $query = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY);
// $query = $_GET["q"];
$response = array();
$response["msg"] = "Hjksa!";
$response["nok"] = "9.32";

echo json_encode($response);
?>

这里的帮助将不胜感激! =)

4 个答案:

答案 0 :(得分:2)

对jQuery的AJAX使用dataType参数,如下所示:

$.ajax({
    type: 'GET',
    url: 'CurrencyResponse.php?q='+curr,
    dataType: 'json',
    success: function( json) {
        alert( json.msg); // Will output Hjksa!

    }
});

这告诉jQuery服务器的响应是JSON,它应该将JSON对象返回给以服务器响应作为参数的回调函数。

详细了解jQuery's site上的dataType

答案 1 :(得分:1)

从文档中判断,它将从响应头中读取MIME类型,并使用它,除非您明确指定它。因此,要么将PHP脚本上的标题设置为application / json,要么将“dataType”参数设置为“json”。

答案 2 :(得分:0)

我建议将对象发送到客户端脚本。它使读取数据更容易。

echo json_encode((object) $array);

答案 3 :(得分:0)

我正在处理类似的问题几天,我已经设置了

dataType: "json",

但它仍然以字符串形式回归。除了jquery请求之外,在我的php文件的头文件中指定json为我解决了这个问题。

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

希望能帮助别人!