asp.net 4 JQuery Ajax не работает с методом страницы в iis - PullRequest
3 голосов
/ 16 сентября 2011

Обычно я парень из MVC, так что jquery ajax - это просто.Я работаю над старым проектом webforms, хотя и не могу получить jquery ajax, чтобы поговорить с webmethod на моем локальном iis.Он работает на собственном веб-сервере Visual Studio.

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"/>

в разделе 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"/>в теге модулей раздела system.webServer веб-конфигурации.Я искренне озадачен тем, почему это не работает.

Большое спасибо заранее тем, кто вносит свой вклад!

1 Ответ

0 голосов
/ 19 сентября 2011

В итоге я переключился на использование веб-службы вместо метода страницы и разместил значение сеанса в скрытом поле на странице, которое затем было отправлено веб-службе. Не так чисто, как хотелось бы, но работает сейчас. Разочарование, потому что у меня никогда не было проблем с тем, чтобы заставить это работать прежде на iis.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...