我正在使用VisualStudio 2008並在ASPX頁面上有一個方法我正嘗試使用jQuery使用jQuery調用,如下所示。我只是將頁面的HTML返回。 webmethod沒有被調用。有趣的是,如果我更改webMethod的名稱來調用JavaScript,我仍然會返回HTML。不是說webMethod無法找到的錯誤。使用jQuery調用webMethod返回HTML ... webMethod根本沒有調用
我試着改變數據參數爲「{'dummy':0}」,但這並沒有幫助。
我已經在新的VS 2010應用程序中沒有問題地使用這個策略,但似乎無法讓它在VS 2008中的現有應用程序上工作,我正在添加一個頁面。 (試圖給舊應用程序添加一個扭曲)我已經看過firefox在firefox中告訴我的是什麼,並且看起來都是正確的。
任何幫助,非常感謝。
C#的WebMethod decalaration:
[WebMethod()]
public static string getQuestionnaires(int dummy)
{
System.Diagnostics.Debug.WriteLine("getQuestionnaires called");
SqlCommand command = new SqlCommand();
command.CommandText = "dbo.ws_GetPSQuestionnaire";
command.CommandType = CommandType.StoredProcedure;
DataTable dtQuestionnairesRaw = Utilities.ReturnDataSet(command).Tables[0];
DataTable dtQuestionnaires = new DataTable();
dtQuestionnaires.Columns.Add(new DataColumn("questionnaireID", typeof(int)));
dtQuestionnaires.Columns.Add(new DataColumn("name"));
foreach (DataRow dr in dtQuestionnairesRaw.Rows)
{
DataRow drNew = dtQuestionnaires.NewRow();
drNew["questionnaireID"] = dr["questionnaireID"];
drNew["name"] = Utilities.RemoveHTMLTags(dr["name"].ToString());
dtQuestionnaires.Rows.Add(drNew);
}
dtQuestionnaires.AcceptChanges();
return (JsonConvert.SerializeObject(dtQuestionnaires, Formatting.Indented));
}
我與這個JavaScript調用它。我的錯誤函數總是被調用。
$(document).ready(function() {
var request = $.ajax({
type: "POST",
url: "/crs4/admin/editPSQuestionnaire.aspx/getQuestionnaires",
contentType: "application/json; charset=utf-8",
data: "{ 'dummy':'0' }",
dataType: "json",
success: populateQuestionnaires,
error: AjaxFailed
});
});
「{ '啞': '0'}」, 應該是在字符串中有效的JSON符號「{ 「假」:「0 「}', - 您還必須設置特定的web.config選項來調用頁面方法(而不僅僅是Web服務方法)。你能解釋一下爲什麼你手動序列化和讓.net通過返回一個有效的項目如列表來爲你做? –
我不確定你的意思。我不需要將有效的JSON傳遞給Web方法嗎?否則我將如何通過它?一旦這個工作正常,我將有其他方法,我希望用不同的參數相應地調用。 –
我發佈的內容僅僅是爲了讓它起作用。我將使用一個函數,該函數接受一系列參數供我的頁面中的其他地方使用。 –