JSON 与 jQuery 和 PHP

发布于 2024-08-18 03:28:35 字数 927 浏览 4 评论 0原文

我有一个用于更新数据库表的脚本。我需要返回一个 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 但又出现同样的问题。

有人有什么想法吗?我很绝望……这个问题已经困扰我近一周了,但我仍然没有解决它。

I have a script for updating a database table. I need to return a JSON array and to update some tables with JQUERY.

my php script:

$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 code:

$("button").live("click", function(event) {
      event.preventDefault();
      $.getJSON("startsearch.php", {
        searchId: $(this).val()
      }, function(data) {
        alert(data[0].status);
      });

now ...the problem is that if i use $.post("startsearch.php",{ searchId: $(this).val() }, function(data)) the script gets executed and i get a nice alert with value undefined. if i add the parameter "json" the script doesn't get executed anymore. I tried to use getJSON but again the same problem.

Anybody has any ideas? I am desperate...this has been bugging me for almost a week and I still haven't managed to solve it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

莫多说 2024-08-25 03:28:35

在您的 php 文件中,确保设置正确的内容类型:

header("Content-type: application/json; charset=utf-8");

以便 jquery 可以正确地将响应eval 转换为 json 对象。

In your php file make sure to set the correct content type:

header("Content-type: application/json; charset=utf-8");

so that jquery can correctly eval the response into a json object.

安穩 2024-08-25 03:28:35

您可以按如下方式获取响应数据:

alert(data.status);
alert(data.results);
alert(data.totalResults);

You can get to your response data as follows:

alert(data.status);
alert(data.results);
alert(data.totalResults);
很糊涂小朋友 2024-08-25 03:28:35

请不要使用警报,在您的 Firefox 中安装 firebug 或在 chrome 或 safari 中启用 javascript 控制台。之后您可以使用 console.log(data);

我的猜测是 data 不是数组。还可以查看 jquery 文档 http://docs.jquery 上的each() exmaple。 com/Ajax/jQuery.getJSON

please don't use alert, install firebug into your firefox or enable the javascript console in chrome or safari. after that you can use console.log(data);

my guess is that data isn't an array. also have a look at the each() exmaple on the jquery docs http://docs.jquery.com/Ajax/jQuery.getJSON

み零 2024-08-25 03:28:35

嗯,我信任 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

Well, I'm trusting json2.js to parse the json data returned from AJAX request. You can download it from http://json.org. This library provide a better way to parse any string, and will throw an exception if the sting is not in json.

I always write my AJAX request like this:

$.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!');
    }
});

When processing json, the array in php will become a variable member in json. So if in your php it is $output['status'], then in json, it will be r.status.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文