簡體   English   中英

為什么我不能使用jQuery.parseJSON(json)解析json字符串?

[英]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.

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