[英]Why can I not parse json string using jQuery.parseJSON(json)?
我正在嘗試解析一個字符串的響應,該字符串是json字符串。 在我的網絡應用的另一頁中,以下代碼運行正常。 但它不適用於我正在使用的當前頁面。 以下是代碼:
$.ajax({
type: 'POST',
url: 'http://mywebapp.com/sendnames',
data: {},
success: function(result) {
alert('result: '+result);
var obj = jQuery.parseJSON(result);
alert('obj: '+obj);
// doing rest of stuff
}
});
出現第一個警報並顯示正確的結果。 結果是:
[
"Richard",
"Eric",
"John"
]
但是沒有第二次警報。 我檢查了它,它是一個有效的json。 為什么我不能使用jQuery.parseJSON()解析此json。 提前致謝。
嘗試添加返回類型:dataType:json
$.ajax({
type: 'POST',
url: 'http://mywebapp.com/sendnames',
data: {},
dataType:'json',
success: function(result) {
console.log('result: '+result);
// doing rest of stuff
}
});
“ json”:
將響應評估為JSON並返回一個JavaScript對象。 在jQuery 1.4中,以嚴格的方式解析JSON數據。 任何格式錯誤的JSON都會被拒絕,並引發解析錯誤。 (有關正確的JSON格式的更多信息,請參見json.org。)“ jsonp”:使用JSONP加載JSON塊。 添加一個額外的“?callback =?” URL的末尾以指定回調。 通過將查詢字符串參數“ _ = [TIMESTAMP]”附加到URL來禁用緩存,除非將cache選項設置為true。 http://api.jquery.com/jQuery.ajax/
將$.ajax
替換$.ajax
$.getJSON
。 確保可以在內部觸發$.parseJSON
,因此result
將已經是所需的JS對象。
$.getJSON({
type: 'POST',
url: 'http://mywebapp.com/sendnames',
data: {},
success: function(obj) {
alert('obj: '+obj);
// doing rest of stuff
}
});
嘗試添加dataType:'text'
,它將返回字符串作為結果。 並且您的代碼將按預期運行。
您正在解析一個對象。 您解析字符串,而不是對象; jQuery.parseJSON只接受字符串。
因為$.ajax
已經解析了數據, result
是Javascript對象而不是字符串。 parseJSON
需要一個字符串參數。
FROM DOCS (有關.ajax()
數據類型的更多信息,請.ajax()
此處 ):
json類型將提取的數據文件解析為JavaScript對象,並將構造的對象作為結果數據返回。 為此,當瀏覽器支持時,它使用jQuery.parseJSON()。 否則使用Function構造函數
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.