asp.net ajax webmethod return [объект XMLHttpRequest] - PullRequest
0 голосов
/ 08 апреля 2011

Я делаю простой вызов Webmethod (Pagemethod), но продолжаю получать эту ошибку:

[объект XMLHttpRequest]

Javascript:

                var id = $('#' + this.Div).attr('id');
                var test = $('#' + id).parent('.Prod-top-time').prev().attr('id');
                test = test.replace('navn_', '');

                var parameters = {'auktionid': test};

                $.ajax({
                type: "POST", 
                url: "Default.aspx/AuctionEnd", 
                data: JSON.stringify(parameters),                   
                //data: JSON.stringify({ auktionid: 34}),  
                contentType: "application/json; charset=utf-8", 
                dataType: "json", 
                error: function(ret) 
                {
                    if (ret.hasOwnProperty('d'))
                      stuff(ret.d);
                    else
                      stuff(ret);
                       }
                       });

                function stuff(msg) {
                              alert(msg);
                             }

В первой части я извлекаю значение из div id.Это число, используемое в качестве параметра.

Webmethod очень прост: (пока только для тестирования)

[WebMethod]
public static string AuctionEnd(int auktionid)
{
    return auktionid.ToString();

}

Независимо от того, что я на него брошу, он возвращает эту ошибку.

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

я могу найти свет в конце туннеля, когда вы хотите использовать WebMethod в jquery, вы должны добавить этот тег в web.config

<configuration>
  <system.web>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpModules>
  </system.web>
</configuration>

удачи

0 голосов
/ 08 апреля 2011

Вы показываете объект ошибки в окне сообщения. Функция ошибки возвращается следующим образом:

error(jqXHR, textStatus, errorThrown)Function 

Функция, вызываемая в случае сбоя запроса. Функция получает три аргумента: объект jqXHR (в jQuery 1.4.x, XMLHttpRequest), строка, описывающая тип возникшей ошибки и необязательный объект исключения, если таковой произошел. Возможные значения для второго аргумента (кроме нуля): «timeout», «error», «abort» и «parsererror». Это Ajax Event. Начиная с jQuery 1.5, установка ошибки может принимать массив функций. Каждая функция будет вызываться по очереди. Примечание. Этот обработчик не вызывается для междоменных сценариев и запросов JSONP.

вам нужно показать детали объекта jqXHR.

Объект jqXHR

Объект jQuery XMLHttpRequest (jqXHR), возвращаемый $ .ajax () начиная с jQuery 1.5, является расширенным набором нативного объекта браузера XMLHttpRequest. Например, он содержит свойства responseText и responseXML, а также метод getResponseHeader (). Когда механизм транспорта отличается от XMLHttpRequest (например, тег сценария для запроса JSONP), объект jqXHR, по возможности, имитирует встроенную функциональность XHR.

Вся информация на

http://api.jquery.com/jQuery.ajax/

И пример вызова ajax, который я использую с обработчиком ошибок:

        //Call the approve method on the code behind
        $.ajax({
            type: "POST",
            url: ResolveUrl("~/Pages/Mobile/Login.aspx/LoginUser"),
            data: "{'Username':'" + $Username + "', 'Password':'" + $Password + "' }", //Pass the parameter names and values
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: true,
            error: function (jqXHR, textStatus, errorThrown) {
                alert("Error- Status: " + textStatus + " jqXHR Status: " + jqXHR.status + " jqXHR Response Text:" + jqXHR.responseText) },
            success: function (msg) {
                if (msg.d == true) {
                    window.location.href = ResolveUrl("~/Pages/Mobile/Index.aspx");
                }
                else {
                    //show error
                    alert('login failed');
                }
            }
        });

Обратите внимание на разницу в обработчике ошибок

Обновленный пример:

        //Call the approve method on the code behind
        $.ajax({
            type: "POST",
            url: "Default.aspx/AuctionEnd",
            data: "{'auktionid':'" + test+ "'}", //Pass the parameter name and value
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: true,
            error: function (jqXHR, textStatus, errorThrown) {
                alert("Error- Status: " + textStatus + " jqXHR Status: " + jqXHR.status + " jqXHR Response Text:" + jqXHR.responseText) },
            success: function (msg) {
                if (msg.d == true) {
                    alert('success');
                }
                else {
                    //show error
                    alert('failed');
                }
            }
        });
...