[英]Why JSON.parse is not working?
我將dataType設置為'text',因為我不想讓Jquery自動解析我的JSON。 我的代碼如下:
var membId = '5';
$('#submitNewDescription').live('click',function(){
//An ajax request is made to update the DB
$.ajax({
url: '../../cgi-bin/qualification.py',
type: 'POST',
data: ({newDescription:$('#newDescription').val(),id:membId}),
dataType: 'text',
cache: 'false',
success: function(data){
json = JSON.parse(data);
console.log(data);
console.log(json);
}
});
});
它在兩個console.log命令中返回字符串:{“error”:[“ORA-01031權限不足”]}。 這意味着解析不起作用,因為它不返回JavaScript對象。 JSONLint對我說這是一個有效的JSON。
任何人都知道發生了什么?
編輯
我可以設置'json',這不是問題。 問題是JSON.parse和$ .parseJSON應該可以工作。 由於它們不是,我將'dataType'更改為'json',但返回相同的字符串。 我不知道發生了什么。
可能是因為你正在尋找$.parseJSON
而不是? 另外我認為 jQuery會查看數據並在解析之前做出最佳猜測,然后再將其傳遞給回調。 所以,如果它看起來像JSON的機會是jQuery已經給你一個JavaScript對象,然后無法使用JSON.parse
/ $.parseJSON
重新解析。
您還可以將dataType
字段更改為'json',讓jQuery為您執行此操作...
將dataType: 'text'
更改為dataType: "json"
以及JSON.parse
更改$.parseJSON
所有瀏覽器中都不存在JSON
庫。 你可能需要包括你自己的http://developer.yahoo.com/yui/json/
或者像其他人建議的那樣,使用jQuery。 您可能還想聲明json
如var json = ...
就我而言,我按照以下方式工作:
請注意我可以: 直接在響應對象中訪問json字段
$.ajax({
type: "POST",
url: baseUrl,
dataType: "json",
data: theData,
success: function(response) {
alert(' status = ' + response.status);
processResponseJSON(response);
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.