2015-01-08 49 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默認爲「智能猜測」,因爲結果會根據輸出中有多少行而變化。