2015-10-28 5 views
0

Я пытаюсь проверить функцию, которая находится на стороне сервера, вызывая ее с клиентской стороны с помощью AJAX.Вызов метода стороне сервера с использованием AJAX

Я получаю эту ошибку каждый раз, когда я вызываю метод AJAX:

http://localhost:5958/myaccount/notifications/myaccount/notifications/Default.aspx/method Не удалось загрузить ресурс: сервер ответил со статусом 404 (не найден)

Вот моя функция AJAX:

function ShowCurrentTime() { 
     $.ajax({ 
      type: "POST", 
      url: "myaccount/notifications/Default.aspx/method", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: OnSuccess, 
      failure: function (response) { 
       alert(response.d); 
      } 
     }); 
    } 
    function OnSuccess(response) { 
     alert(response.d); 
    } 

управления HTML:

<input id="btnGetTime" type="button" value="Show Current Time" 
    onclick="ShowCurrentTime()" /> 

Функции Я пытаюсь вызвать на стороне сервера:

 [WebMethod] 
    protected bool method() 
    { 
     return true; 
    } 

Что такое правильный способ сделать это?

Update

Измененный URL для: '<%= ResolveUrl("~/default.aspx/method") %>' и теперь я получаю 500 Внутренняя ошибка сервера.

Update2

Внутренняя ошибка была из-за [HttpPost] атрибут, который я изменил к [WebMethod], и это работает.

+0

Взгляните на принятый ответ на этот вопрос SO: http://stackoverflow.com/questions/6928533/calling-a-webmethod-with-jquery-in-asp-net-webforms Попробуйте создать URL-адрес для target WebMethod, как это делается там, а не hardcoding его –

+0

@IanGilroy изменил URL-адрес на: <% = ResolveUrl ("~/myaccount/notification/Default.aspx/method")%>, и теперь я получаю эту ошибку: SyntaxError: недопустимые флаги, предоставленные для уведомлений конструктора RegExp –

+0

, возможно, вы можете ссылаться на другую ссылку следующим образом: [ajax call jquery asp.net mvc] (http://stackoverflow.com/questions/414726/asp-net-mvc- and-jquery-get-info-to-controller) – Jack1987

ответ

1

Я думаю, что проблема в вашем url.

Используйте ведущую косую черту (/), как показано ниже.

url:"/myaccount/notifications/Default.aspx/method" 
+0

Хорошо, у меня есть ведущая косая черта. Сейчас я получаю 500 (Внутренняя ошибка сервера) –

1

Ваш вызов на стороне сервера должен быть статическим. https://msdn.microsoft.com/en-us/library/bb398998(v=vs.90).aspx

[WebMethod] 
public static bool method() 
{ 
    return true; 
} 
+0

. Я попробую это –

+0

Я получаю ошибку внутреннего сервера –

+0

попытаться установить ваш url в 'Default.aspx/method' – g2000

0

Я предполагаю, что вы не пропуская какого-либо параметра. Так что вы можете попробовать Data: {} вместо Data: "{}".

Смежные вопросы