我正在使用VisualStudio 2008并在ASPX页面上有一个方法,我试图使用jQuery调用javascript,如下所示。我刚刚收到页面的HTML。没有调用web方法。有趣的是,如果我更改了要在javascript中调用的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 :(得分:1)
让我们简单地验证您的配置:
创建一个简单的类来返回:
public class myReturn
{
/// web service/webmethod needs 0 parameter constructor
public myReturn()
{
}
public myReturn(string returnValue)
{
ReturnValue = returnValue;
}
public string ReturnValue;
}
声明您的网络方法使用该课程:
[WebMethod()]
public static myReturn getQuestionnaires(int dummy)
{
return new myReturn("howdy");
}
称之为:
//set up the ajax with error so we see what is going on.
// the following syntax requires jquery 1.5 or later for the
// converters used for asp.net
$.ajaxSetup({
data: "{}",
dataType: "json",
type: "POST",
contentType: "application/json",
converters: {
"json jsond": function(msg) {
return msg.hasOwnProperty('d') ? msg.d : msg;
}
},
error: function(xhr, textStatus, errorThrown) {
var errorMessage = ("Ajax error - " + this.url + " | "
+ textStatus + " | " + errorThrown + " | "
+ xhr.statusText + " | " + xhr.status);
alert(errorMessage);
}
});
var pString = '{"dummy":0}';
$.ajax({
data: pString,
url: "/crs4/admin/editPSQuestionnaire.aspx/getQuestionnaires",
success: function(msg) {
alert(msg);
}
});
编辑:您可能需要在网络配置中使用此功能:
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>