JSON 与 jQuery 和 PHP
我有一个用于更新数据库表的脚本。我需要返回一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在您的 php 文件中,确保设置正确的内容类型:
以便 jquery 可以正确地将响应
eval
转换为 json 对象。In your php file make sure to set the correct content type:
so that jquery can correctly
eval
the response into a json object.您可以按如下方式获取响应数据:
You can get to your response data as follows:
请不要使用警报,在您的 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
嗯,我信任 json2.js 来解析 AJAX 请求返回的 json 数据。您可以从 http://json.org 下载它。该库提供了一种更好的方法来解析任何字符串,并且如果字符串不在 json 中,则会抛出异常。
我总是这样写我的AJAX请求:
处理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:
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 ber.status
.