簡體   English   中英

jQuery ajax json響應的長度未定義且數據不正確

[英]jQuery ajax json response has length undefined and incorrect data

我正在嘗試獲取一個字典對象,該對象在服務器端轉換為json對象(以及正確的內容類型標題),但由於某種原因,即使我可以訪問部分數據,其他部分也不顯示up和jquery中的json對象的長度等於0。

這是我的jquery調用:

$.ajax({
        type : "POST",
        url : cl._url,
        //data : 'text='+text,  
  data: "{}",
  contentType: "application/json; charset=utf-8",
        dataType : "json",
        error : function(XHR, status, error) {
            alert("There was an error processing the request.\n\n"+XHR.responseText);
        },
        success : function(json){
            if (!json.length) {
                alert('There are no incorrectly spelled words...'+json[0]+ '  ' + json.length);
            } else {
                // highlight bad words
            }
            cl.$container.html(html);   
            // execute callback function, if any
            (callback != undefined) && callback(); 
        }
    });

我通常會使用此代碼獲取警報框,並且json [0]按預期打印出99。 但是json.length是“未定義的”。 所以在某種意義上,json返回是正確的,但我的代碼不會檢測它並使用它。

當我直接進入我的ashx頁面,我的json數據被打印在屏幕上時,我得到了這個json對象:

{"id":1,"json":[5,10,15,20],"0":"99"}

只是一個示例json輸出。 那怎么來json.length不是3 ???

更新:所以我改變了我的asp.net代碼,從Dictionary到List,然后添加了相同的值。 突然間,長度現在正在發揮作用。 ?!?!?! 所以對象在javascript中沒有長度?

對象沒有長度屬性,除非您給它們一個。 數組有,但是使用[]而不是{}創建數組。

如果你想知道一個對象有多少屬性,你必須循環它們並計算它們:

var count = 0;
for (var foo in bar) {
    if (bar.hasOwnProperty(foo) {
        count++;
    }
}

您可以使用以下命令將對象轉換為JSON

var jsonVariable= JSON.stringify(objectVariable);
var jsonVariableLength = jsonVariable.length ;

並打印長度:

alert('Length : ' + jsonVariableLength );

調試此方法的最佳方法是在Firebug控制台下檢查響應。 看看你是否回復了有效的回復。

http://getfirebug.com/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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