我有用于更新数据库表的脚本。我需要返回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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top