簡體   English   中英

為什么JSON.parse不起作用?

[英]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。 您可能還想聲明jsonvar json = ...

就我而言,我按照以下方式工作:

  • 從服務器(servlet),我指定json作為響應的數據類型
  • 然后jquery調用已經將響應參數解析為JSON對象(所以我不需要運行$ .parseJSON)...謝謝你https://stackoverflow.com/a/6465506/2162226

請注意我可以: 直接在響應對象中訪問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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM