2015-01-08 50 views
1
<script type="text/javascript"> 
$(document).ready(function(){ 
var obj = ""; 
var param = [{ "name": "id", value: 9}]; 
$.ajax({ 
    type: 'POST', 
    url: '2.php', 
    data: param, 
    success: function(dataFetch) { 
var obj = JSON.parse(dataFetch); 
alert(obj[0].name); 
}, 
    dataType: 'json', 
    async:false 
}); 
}); 
</script> 

上面是我的代码。 2.PHP的返回结果是JSon解析我的代码返回错误

{"name":"Halford Tee","type":"client","mobile":"1234567","location":"","description":""} 

它给我一个error

Uncaught SyntaxError: Unexpected end of input 

当我删除这部分

var obj = JSON.parse(dataFetch); 
alert(obj[0].name); 

的错误消失。我的代码有什么问题吗?


看着从老乡程序设计师宝贵的指导后

我2.PHP返回

{"name":"David Tan","type":"leads","mobile":"91234567","location":"","description":""} 

我尝试以下

$(document).ready(function(){ 
var obj = ""; 
var param = [{ "name": "eventId", value: 9}]; 
$.ajax({ 
    type: 'POST', 
    url: '2.php', 
    data: param, 
    success: function(dataFetch) { 
alert(dataFetch[0].name); 
}, 
    dataType: 'json', 
    async:false 
}); 
}); 

它给我一个错误

cannot read property 'name' of undefined. 
+2

'dataType:'json''会让jQuery自动解析响应。如果只使用alert(dataFetch [0] .name),会发生什么;'? –

+0

@FelixKling我更新了我的问题,谢谢 – BUN

+0

使用console.log(dataFetch);并看看你得到了什么。 –

回答

0
当您使用 dataType: 'json'在阿贾克斯,那么你就不需要使用 JSON.parse.查看资料自动解析在 json format。所以,你可以直接使用它

use : `alert(dataFetch.name);`// you do not have any array so directly use it.your data is an object not array of object. 

注:我认为你应该使用async:false只有当你的电话已经完成在你的函数的下一条语句可以被称为前。

+0

我更新了我的问题,似乎仍然存在问题。是的,它必须完成才能调用下一个语句。 – BUN

+0

查看已更新的answer.al已在评论中告知。 –

+0

非常感谢 – BUN

0

After:var obj = JSON.parse(dataFetch);

alert(JSON.stringify(obj)); 

它可能会帮助您纠正您的问题。

+0

做完警报后,您会发现与您正在使用的json相关的键和值。 –

0

(这个答案是基于您的评论,可能有多个行。)

我觉得这是那些之一始终-1 VS 0或更多的 vs 1-more-more问题。

你必须决定,究竟是 2.php返回什么?

  1. 总是单行吗? {"name":"David Tan",...}
  2. 总是一个零或多行的数组? [{"name":"David Tan",...}, {"name":"Clark Kent",...},...]
  3. 或者只是一个或多个行,但不能将它们括起来作为数组?{"name":"David Tan",...}{"name":"Clark Kent",...}

在情况下(1),dataFetch.name是“David Tan”。

在情况(2)中,dataFetch[0].name是“David Tan”。

在情况(3)中,您的输出无效JSON。如果您有能力更改PHP脚本,则将输出更改为Case(2)格式< < 好解决方案。如果您必须处理别人的PHP脚本,那么您需要将您的ajax调用更改为dataType: "text",然后清理它使其生效JSON,然后解析JSON客户端。你不要想省略dataType并让jQuery默认为“智能猜测”,因为结果会根据输出中有多少行而变化。