第一个成功函数有效,第二个成功函数...如果我将数据类型更改为文本,它可以工作...但如果我将数据类型更改为文本我无法遍历数组...例如我需要数据[0 ] ..与json一起工作....但是json成功函数不起作用......
var turl = "getForum.php";
var turl = "getForum.php";
var wurl = "getDiscussions.php";
$.ajax({
url:turl,
type:"POST",
dataType:"json",
success:function(data){
forumid = data[0]; // this works ...
dataString = 'forumid='+ forumid;
$.ajax({
url:wurl,
type:"POST",
dataType:"json",
data:dataString,
success:function(data){
alert(data); // this works if I change datatype to text... but if i type datatype to text am not able to iterate through the array .. for example i require data[0].. which works with json....but with json success function is not working ...
}
});
}
});
php文件返回json对象
$query1 = " select * from discussforum where forumId= '$forumid'; ";
$result1 = mysql_query($query1);
while($info1 = mysql_fetch_array( $result1 )){
echo json_encode($info1);
}
答案 0 :(得分:2)
你确定你的PHP只返回一个JSON对象吗?如果不是:
$ret = array();
while($info1 = mysql_fetch_array( $result1 )){
$ret[] = $info1;
}
print json_encode($ret);
答案 1 :(得分:0)
我认为解决方案是在评论中描述的,但在这里它会更详细一些。首先看一下jQuery.ajax()的精美文档。您需要为所有Ajax调用添加错误回调。具有以下签名:
error(jqXHR, textStatus, errorThrown)
你可以像这样添加一个参数给.ajax():
error: function(jqXHR, textStatus, errorThrown) {
console.error(textStatus);
},
这样,您将在控制台中看到Ajax调用期间以及处理消息期间发生的每个错误。您可以在一些常见的.js文件中定义泛型ajaxError回调,并在任何地方使用它。
在这种情况下,您正在很好地解释错误的原因:getDiscussions.php
返回的内容不是JSON,因此当您设置dataType:"json"
时,jQuery解析器无法理解它:它会调用error
回调如果有的话。但是,当dataType设置为text时,它可以工作。所以POST请求可能会失败。
要查看它发送的内容,您可以在错误回调中提取它,如下所示:
error: function(jqXHR, textStatus, errorThrown) {
console.error('Error in response: ' + jqXHR.responseText
},
因此您可以诊断服务器中的问题。