2012-07-19 182 views
1

我在document.ready中有以下代碼,當我使用Chrome的調試器來查看爲什麼沒有發生時,我看到出於某種原因,ajax調用會被跳過嗎?jQuery代碼沒有運行

var latitude = $('#LatitudeHidden').val(); 
       var longitude = $('#LongitudeHidden').val(); 
       var from = $('#<%:FromTextBox.ClientID %>').val(); 
       var to = $('#<%:ToTextBox.ClientID %>').val(); 
       var type = $('#<%:TypeEnhancedDropDownList.ClientID %>').val(); 
       var specialLocation = $('#<%:SpecialLocationsEnhancedDropDownList.ClientID %>').val(); 

       var json = { 
        'latitude': latitude, 
        'longitude': longitude, 
        'from': from, 
        'to': to, 
        'type': type, 
        'specialLocation': specialLocation 
       }; 

       $.ajax({ 
        type: "POST", 
        url: "List.aspx/GetFilteredLocations", 
        data: json, 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        error: function(msg) 
        { 
         console.log(msg); 
        }, 
        success: function(msg) 
        { 
         console.log(msg.d); 
        } 
       }); 
+0

是否有任何錯誤(包括JSON庫到您的網頁之後)? – Gabe 2012-07-19 19:59:54

+0

@Gabe:我第一次使用FF並且沒有,然後我嘗試了Chrome,現在我又看了一遍,發現內部服務器錯誤。 – Lee 2012-07-19 20:03:04

+0

你確定'「List.aspx/GetFilteredLocations」'是一個合法的URL嗎? – Blazemonger 2012-07-19 20:04:34

回答

2

現在看來似乎是有問題的反序列化JSON數據... 您可能需要字符串化您的數據,即使你有數據類型設置爲JSON。 有一個js庫來完成這個。 Here is JSON js library to help

試試這個

$.ajax({ 
    type: "POST", 
    url: "List.aspx/GetFilteredLocations", 
    data: JSON.stringify(json), 
    error: function(msg) 
    { 
     console.log(msg); 
    }, 
    success: function(msg) 
    { 
     console.log(msg.d); 
    } 
}); 
+0

謝謝Gabe。我使用了這個庫:http://code.google.com/p/jquery-json/。字符串化做了什麼? – Lee 2012-07-19 20:27:57

+0

它將json對象解析爲一個字符串符號並傳遞給服務器。 – Gabe 2012-07-19 20:32:41

+0

我不得不將所有服務器端參數(int,float等)更改爲字符串?現在我必須退後一步。這是唯一的方法嗎? – Lee 2012-07-19 20:35:44