2011-02-09 72 views
0

我使用一個jQuery函數這有點像這樣調用頁面方法:頁方法不工作

function GetNewDate(thedateitem) { 

     ThisMonth = 3; 
     TheDay = 1; 
     TheYear = 2011; 

    DateString = TheMonth + '/' + TheDay + '/' + TheYear; 

    $.ajax({ 
     type: "POST", 
     url: "/Pages/CallHistory.aspx/ResetDate", 
     contentType: "application/json; charset=utf-8", 
     data: DateString, 
     dataType: "json", 
     success: successFn, 
     error: errorFn 
    }) 
}; 

,然後在後面的文件中的代碼,我有:

[WebMethod] 
public static void ResetDate(DateTime TheNewDate) 
{ 
    var test = 4; 
} 

然而,當我在var test = 4上放置一個斷點時,它永遠不會停在那裏。

我錯過了什麼?

謝謝。

+0

我總是用數據類型:「文本「當調用Web方法時,只是指出這一點,並不確定這是否會導致它。 – Loktar 2011-02-09 21:26:28

+0

如何編寫路徑使其工作?路徑是正確的。 – frenchie 2011-02-09 21:27:08

回答

3

你需要檢查你的jQuery調用到底發生了什麼 - 我建議你使用firebug(或者你選擇的瀏覽器中的等價物)來跟蹤javascript並查看響應/請求。

這將允許您看到從網頁/方法返回的任何錯誤。


更新:

如果使用dataType: "json"你應該發送正確JSON

+0

絕對沒有任何反應。我嘗試了更新面板中的另一個ajax調用,當它觸發時,我看到了firefox中的調用。但是,當我點擊觸發jquery調用的按鈕時,它就是nada。 – frenchie 2011-02-09 21:31:45

2

您需要在您的ajax調用中正確編碼data,並引用參數名稱。你需要使用帶參數名稱的JSON字符串作爲屬性,這樣Asp.NET頁面方法才能正確理解數據。例如:

data: "{'TheNewDate':'" + DateString +"'}", 

馬修使得在評論好點 - 你需要正確的序列化這樣的.Net正確理解它(所有其他原語做工精細,日期是缺乏JS文字表達的形式,並且你的約會因此有問題)。我發現a good example on the SCHOTIME.NET blog其中有一個方便的小功能序列化JS Date對象爲MS兼容的JSON字符串

Date.prototype.toMSJSON = function() { 
     var date = '"\\\/Date(' + this.getTime() + ')\\\/"'; 
     return date; 
}; 

你的全ajax調用會再看看這樣的:

dateValue = new Date(TheYear, TheMonth , TheDay); 

$.ajax({ 
    type: "POST", 
    url: "/Pages/CallHistory.aspx/ResetDate", 
    contentType: "application/json; charset=utf-8", 
    data: "{'TheNewDate':" + dateValue.toMSJSON +"}", //<-- the modification 
    dataType: "json", 
    success: successFn, 
    error: errorFn 
})