asp.net 4 jQuery Ajax在iis中不使用页面方法

时间:2011-09-16 09:29:43

标签: jquery asp.net ajax iis

我通常是一个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标签中。
我很遗憾地知道为什么它不起作用。

非常感谢那些贡献的人!

1 个答案:

答案 0 :(得分:0)

最后,我改为使用webservice而不是page方法,并将会话值发布到页面上的隐藏字段,然后将其发送到Web服务。不像id那样干净,但现在正在工作。令人沮丧,因为我在iis之前从未遇到任何问题。