我将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',但返回相同的字符串。我不知道发生了什么。
答案 0 :(得分:7)
可能是因为您正在寻找$.parseJSON
而已?此外,我 beieve jQuery将查看数据,并在将其传递给回调之前对其进行最佳猜测。所以,如果它看起来像JSON的机会是jQuery已经给你一个JavaScript对象,那么不能使用JSON.parse
/ $.parseJSON
重新解析。
您也可以将dataType
字段更改为'json',让jQuery为您执行此操作...
答案 1 :(得分:2)
将 dataType: 'text'
更改为dataType: "json"
,将JSON.parse
更改为$.parseJSON
答案 2 :(得分:1)
所有浏览器中都不存在JSON
库。您可能需要包含自己的http://developer.yahoo.com/yui/json/
或者像其他建议一样,使用jQuery。您可能还想声明json
1}} var json = ...
答案 3 :(得分:0)
就我而言,我按照以下方式开展工作:
注意我可以: 直接在响应对象中访问json字段
$.ajax({
type: "POST",
url: baseUrl,
dataType: "json",
data: theData,
success: function(response) {
alert(' status = ' + response.status);
processResponseJSON(response);
},