题
我有用于更新数据库表的脚本。我需要返回JSON数组并更新与jQuery一些表。
我的PHP脚本:
$update = mysql_query("UPDATE PLD_SEARCHES SET STATUS = 1, TOTAL_RESULTS = ".$scrapper->getTotalResults().",RESULTS = $resultCounter WHERE ID = ".$searchId);
$output = array("status"=>"COMPLETED","results"=>$resultCounter,"totalResults"=>$scrapper->getTotalResults());
echo json_encode($output);
jQuery代码:
$("button").live("click", function(event){
event.preventDefault();
$.getJSON("startsearch.php",{ searchId: $(this).val() }, function(data){
alert(data[0].status);
});
...现在的问题是,如果我使用$.post("startsearch.php",{ searchId: $(this).val() }, function(data))
的脚本执行后,我也得到一个很好的警示与价值不确定。如果我添加参数“JSON”的剧本没有得到执行了。我试图使用的getJSON但再次同样的问题。
任何人有任何想法?我绝望了......这已被窃听我差不多一个星期,我还没有设法解决它。
解决方案
在你的PHP文件一定要设置正确的内容类型:
header("Content-type: application/json; charset=utf-8");
,使得jquery的可以正确eval
响应成JSON对象。
其他提示
您能得到您的回复数据如下:
alert(data.status);
alert(data.results);
alert(data.totalResults);
请不要使用警报,萤火安装到你的Firefox或启用Chrome或Safari JavaScript控制台。之后,可以使用console.log(data);
我的猜测是,数据不是阵列。也看看jQuery开发文档 HTTP每个()〔实施例://docs.jquery。 COM /的Ajax / jQuery.getJSON
好,我相信json2.js
解析从AJAX请求返回的JSON数据。您可以从 http://json.org 下载。该库提供了一个更好的方式来解析任何字符串,如果刺不JSON会抛出异常。
我总是这样写我的AJAX请求:
$.post(URL,
{ PARAM },
function(data){
try {
var r = JSON.parse(data);
//this for your code above
alert (r.status); //should be 'COMPLETED'
}
catch (e) {
//data is not in json format, or there are another exception in try block
//do something about it
alert('Exception occured, please check the data!');
}
});
当处理JSON,在PHP阵列将成为JSON可变构件。所以,如果你的PHP是$output['status']
,然后在JSON,将r.status
。
不隶属于 StackOverflow