2013-09-10 2 views
0

Я пытаюсь опубликовать метод, используя jQuery и Ajax. Мой Ajax код выглядит следующим образом:Ошибка с моим сообщением Ajax с jQuery

var isMale = $(e.currentTarget).index() == 0 ? true : false; 

$.ajax({ 
     type: "POST", 
     url: "Default.aspx/SetUpSession", 
     data: { isMale: isMale }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function() { 
     // Go to next question 
     } 
}); 

А вот мой WebMethod:

[WebMethod] 
public static void SetUpSession(bool isMale) 
{ 
    // Do stuff 
} 

Я получаю 500 (Внутренняя ошибка сервера), глядя на консоли, метод никогда не ударил. После того, как я изменил данные на "{}" и удалил bool из сигнатуры метода, метод затем попадает, поэтому я предполагаю, что это связано с атрибутом Ajax.data, который я пытаюсь передать.

+0

Проверьте, присутствует ли 'Default.aspx' в том же каталоге, иначе попробуйте указать правильный относительный URL. –

+0

@TaditKumarDash Э? Я не совсем понимаю, что вы имеете в виду? – ediblecode

+0

@HiTechMagic По-видимому, это и метод получает удар, только не с теми атрибутами данных – ediblecode

ответ

2

Две вещи, которые нужно изменить: -

1) Убедитесь в том, что эта строка написана на странице веб-службы и должны быть раскомментирована.

[System.Web.Script.Services.ScriptService]

2) Изменить "данные" в коде, как: -

$.ajax({ 
     type: "POST", 
     url: "Default.aspx/SetUpSession", 
     data: '{ isMale:"' + isMale + '"}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function() { 
     // Go to next question 
     } 
}); 
-1

Pass строка вместо BOOL

[WebMethod] 
public static void SetUpSession(string isMale) 
{ 
// Do stuff 
} 

Альтернатива Вы можете использовать PageMethods через менеджер сценариев.

+0

Я не могу понять людей, которые не имеют возможности объяснить, почему -1! Причина, по которой они делают такую ​​вещь, может помочь плакату и читателям, но ... они, вероятно, не хотят помогать. –

-1

Попробуйте следующий код:

var params = '{"isMale":"' + $(e.currentTarget).index() == 0 ? true : false + '"}'; 

    $.ajax({ 
     type: "POST", 
     url: "Default.aspx/SetUpSession", 
     data: params, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     responseType: "json", 
     success: function (data) {} 
    }); 

[WebMethod] 
public static void SetUpSession(string isMale) 
{ 
    // Do stuff 
} 
Смежные вопросы