我通常是一个MVC小伙子,所以jquery ajax通常是轻而易举的。我正在开发一个旧的webforms项目,但是无法让jquery ajax与我本地iis上的web方法交谈。它适用于视觉工作室自己的Web服务器。
jquery是:
//Collect data
var prefs = {
'pref_1': $('input#pref_1').val(),
'pref_2': $('input#pref_2').val(),
'pref_3': $('input#pref_3').val(),
'pref_4': $('input#pref_4').val()
}
//Send data via ajax
//Uncomment below to send requests
var loc = window.location.href;
var substr = loc.split("?");
$.ajax({
url: substr[0] + "/SetUserPreferences",
type: "POST",
data: JSON.stringify(prefs),
dataType: "json",
contentType: "application/json; charset=utf-8"
});
正如您所看到的,我正在使用位置href并在那里搜索方法。
在index.aspx页面中,我有:
[WebMethod]
public static void SetUserPreferences(string pref_1, string pref_2, string pref_3, string pref_4)
{
using (lbDataContext dc = new lbDataContext())
{
MoreBang_Preference preference = new MoreBang_Preference();
preference.UserId = (int)HttpContext.Current.Session["UserId"];
preference.DateSubmitted = DateTime.Now;
preference.Preference1 = pref_1;
preference.Preference2 = pref_2;
preference.Preference3 = pref_3;
preference.Preference4 = pref_4;
dc.MoreBang_Preferences.InsertOnSubmit(preference);
dc.SubmitChanges();
}
}
我正在开发的网站是一个umbraco网站,它有
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
在Web配置的httpModules部分中,并在Asp.Net 4集成模式下运行。
它也有
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
在web配置的system.webServer部分的modules标签中。
我很遗憾地知道为什么它不起作用。
非常感谢那些贡献的人!
答案 0 :(得分:0)
最后,我改为使用webservice而不是page方法,并将会话值发布到页面上的隐藏字段,然后将其发送到Web服务。不像id那样干净,但现在正在工作。令人沮丧,因为我在iis之前从未遇到任何问题。