Nagendra kumar 2 Ответов: 2

JQuery и AJAX, не называя атрибутом webmethod после перезаписи URL-адресов или преобразования url


500 Internal Server Error


jQuery Ajax не вызывает webmethod после перезаписи url-адреса

Веб-сервиса.asmx и
содержат следующий colde

[WebMethod]
публичная строка HelloWorld() {
возвращение "Hello World";
}
-------------мой код jquery -------------

<script type="text/javascript">
    $(document).ready(function ()
    {

        $.ajax({
            type: "POST",
            url: 'WebService.asmx/HelloWorld',
            data: {},
            contentType: "application/json; charset=utf-8",
            success: countItem
        });
        function countItem(data, status, xhr)
        {

            alert(data.d);

        }


    });

</script>


он работает нормально но когда я использую url rewrite или url rooting он дает ошибку

исходный путь
http://localhost:1388/WebSite15/WebService.asmx/HelloWorld
это сработает
но после перезаписи url или укоренения url
http://localhost:1388/WebSite15/Products/WebService.asmx/HelloWorld

так что это дает ошибку

Что я уже пробовал:

событий Application_Start недействительным(объект отправителя, EventArgs в электронной)
{
// Код, который запускается при запуске приложения
// Код, который запускается при запуске приложения
RegisterRoute(System.Web.Routing.Таблица.Маршруты);

}


void RegisterRoute(System.Web.Routing.Маршруты сбора маршрутов)
{




маршруты.Добавить("продукты", новая система.Web.Routing.Маршрут("{Products}/{category}", новый CategoryRouteHandler()));
}


публичный класс CategoryRouteHandler : IRouteHandler
{
общественные CategoryRouteHandler() { }

public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
// AdventureWorksEntities awe = новые AdventureWorksEntities();
строки кота = объекта RequestContext.RouteData.Значения["раздел"] как строку;
string pageval = requestContext.RouteData.Values["Products"] в виде строки;
//int catid = благоговение.Продуктовые категории.Где(x => x.Name == кот).Метода firstordefault().Ее идентификатора productcategoryid;
Свойство HttpContext.Тока.Элементы["catid"] = cat;
если (pageval.Нижестоящим().ToString().Trim() == "тест")
{

верните BuildManager.CreateInstanceFromVirtualPath("~/test1.aspx", typeof(Page)) как страница;
}
еще
{
верните BuildManager.CreateInstanceFromVirtualPath("~/Products.aspx", typeof(Page)) как страница;
}

// string vartualpath=BuildManager.CreateInstanceFromVirtualPath("~/Products.aspx", typeof(страница)).Метод toString();
//return BuildManager.CreateInstanceFromVirtualPath("~/category.aspx", typeof(Page)) как страница;
}
}

2 Ответов

Рейтинг:
1

Prateek Dalbehera

Привет,

Из вашего кода javascript я чувствую , что в то время как вы переписываете или сопоставляете, url-адрес изменяется, и тот же url-адрес не предоставляется в URL-адресе ajax.

Ваш url-адрес:

'WebService.asmx/HelloWorld'


но после сопоставления при изменении url-адреса ajax не может найти то же самое.

Итак, я думаю, что Ваш url-адрес в ajax должен быть:

'/Products/WebService.asmx/HelloWorld'


Примечание: пожалуйста, поставьте "/" в начале url-адреса, чтобы он мог правильно маршрутизировать при вызове метода другого контроллера.

Пожалуйста, попробуйте отправить запросы, если таковые имеются.

Спасибо,
Пратек


Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Я тоже так думаю.

Рейтинг:
0

Member 13831888

Я написал решение по переполнению стека об этой проблеме, проверьте эту ссылку...
asp.net - jQuery Ajax не вызывает webmethod после перезаписи url - переполнения стека[^]