2011-11-03 56 views
0

,我有以下的jQuery代碼,試圖來填充下拉列表:使用jQuery/JSON更新選擇列表 - jQuery代碼的執行似乎停止

<script language="javascript" type="text/javascript"> 
$(function(){ 
    $("#setStatusDrpDown").change(function(){ 
    $.getJSON("getStatusChangeReasons", 
       {selectedStatusId: $(this).val(), ajax: 'true'}, 
       function(result) { 
       alert("here"); 
       for (var i = 0; i < result.length; i++) { 
       alert("hello"); 
       options += '<option value="' + result[i].id + '">' + result[i].changeReason + '</option>'; 
    } 
       $("select#statusChangeReason").html(options); 
     }); 
     }); 
    }); 
</script> 

我知道的代碼運行時,由於我可以看到我的控制器攔截它,甚至打印selectedStatusId值。我無法弄清楚的是爲什麼我的警報都不顯示。我在javascript控制檯上看不到任何錯誤。就好像代碼只是在控制器之後退出執行一樣。任何建議apprecaited!

回答

1

您的服務可能會拋出錯誤或返回$ .getJSON無法理解的內容。

重要提示:從jQuery 1.4開始,如果JSON文件包含語法錯誤, 請求通常會以靜默方式失敗。出於這個原因避免頻繁手動編輯 JSON數據。 JSON是一種數據交換格式,其中 的語法規則比JavaScript的對象 字面記法更嚴格。例如,以JSON表示的所有字符串, 無論它們是屬性還是值,都必須包含在 雙引號中。有關JSON格式的詳細信息,請參見http://json.org/

http://api.jquery.com/jQuery.getJSON/

您可以處理錯誤枝條XHR返回值。

// Assign handlers immediately after making the request, 
// and remember the jqxhr object for this request 
var jqxhr = $.getJSON("example.json", function() { 
    alert("success"); 
}) 
.success(function() { alert("second success"); }) 
.error(function() { alert("error"); }) 
.complete(function() { alert("complete"); }); 
+0

你說得對,它確實提醒說有錯誤。我返回一個對象的哈希集,並且每個對象都覆蓋了.toString方法,以便它可以被當作JSON對待,但顯然我仍然在做錯誤的事情。 – MTR

+0

是否必須將ArrayList或HashSet作爲JSON對象返回? – MTR

+0

這個答案在我的路上讓我很好。我現在的問題是試圖導入傑克遜庫時的某種循環引用,但這完全是一個新問題。 – MTR