2012-04-18 57 views
0

我使用jQuery獲取名稱爲JSON字符串列表 -JSON返回AJAX後jQuery的不確定

`

$.ajax({ type: 'POST', url: "../Names.aspx", dataType: 'json', contentType: "application/json; charset=utf-8", data: "NAME=ALL_PROFILES", success: function (data, textStatus, jqXHR)` { 

       var html = ''; 


       var obj = jQuery.parseJSON(data); 
       $.each(obj, function (key, val) { 
        html += '<option value="' + val + '">' + val + '</option>'; 
        alert("Success" + val); 
       }) 
       $('#selName').append(html); 
       $('#selName').selectmenu('refresh'); 


      }, 
       error: function (jqXHR, textStatus, errorThrown) { 
        alert('Error ' + jqXHR.val + errorThrown.val + textStatus.val); 
       } 
      }); 

後端是一個asp.net頁面,當我調試我得到字符串爲"{"Name":["Maria","John","Raj","Rosh","Tony","Name","test3","test4","test5","test6"]}",我把它放在JSONLint並驗證。它在上面的AJAX請求中返回undefined錯誤。如果我嘗試使用單個字符串"Name":"John",它可以很好地工作。用於添加選項的函數對於JSON字符串數組不正確(我將在它進入成功塊後處理它),但我不明白爲什麼當它返回有效的JSON字符串時返回undefined錯誤。任何幫助,將不勝感激。

回答

0

將額外paranthesis周圍的結果,它works.It很奇怪,因爲JSONLint不驗證它現在

0

如果您的aspx頁面返回有效的JSON並且您正在使用dataType: 'json',則不應在返回的數據上使用jQuery.parseJSON(),因爲jQuery已將返回的JSON字符串解析爲對象。

如果您使用"Name":"John"它不是有效的JSON,所以JQuery進入error回調。

+0

我認爲你是我mistake.WHen用「名」:「約翰」進入成功的塊。 parseJSON是在Sucess block.It不會被調用 – 2012-04-18 03:02:53

+0

只要確保您返回有效的JSON並刪除行:'var obj = jQuery.parseJSON(data);'和工作/循環的'data'變量,而不是應該管用。 – stewe 2012-04-18 03:06:45

+0

我試過了。實際上我只是在成功block中放了一個提醒。它根本沒有被調用 – 2012-04-18 03:10:47