2013-09-13 3 views
1

Я видел ужасную и интересную вещь сегодня. Пожалуйста, взгляните на этот вызов ajax на метод web api post.Ajax call get post intelligence

$.ajax({ 
     url: 'api/AccountAPI/GetByNickName', 
     type: 'POST', 
     data: JSON.stringify({ ConnectedUserNickName: key }), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     async: true, 
     success: function (data) { 
       alert('successful'); 
     }, 
     error: function (err) { 
      alert('error'); 
     } 
    }); 

Это происходит ошибка: "Не удалось загрузить ресурс: сервер ответил со статусом 405 (Method Not Allowed)". Этот вызов ajax не влияет на метод «GetByNickName» на стороне сервера.

Если я изменю имя метода на «checkNickName» или что-то еще, тогда он отлично работает. Мне это очень интересно. Может кто-нибудь сказать, что здесь происходит.

$.ajax({ 
     url: 'api/AccountAPI/CheckNickName', 
     type: 'POST', 
     data: JSON.stringify({ ConnectedUserNickName: key }), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     async: true, 
     success: function (data) { 
       alert('successful'); 
     }, 
     error: function (err) { 
      alert('error'); 
     } 
    }); 

Когда я заметил, что ошибка происходя из имени метода «GetByNickName», я подумал, что может быть какой-то интеллект в Ajax пост/получить имя метода. Итак, какова фактическая причина?

+0

что является внутренний язык? –

+0

бэкэнд asp.net web api. @SunilMishra –

ответ

1

В ASP.NET Web API framework по умолчанию отображает входящие запросы на соответствующее действие на основании запроса HTTP verb.

Так что если вы укажете GetByNickName, это соответствует HTTP-адресу GET, где CheckNickName не соответствует ни одному HTTP-глаголу, следовательно, он работает в вашем случае.

Пример может быть что у вас есть какое-либо действие AccountAPI

public void Get(int id) 

Вашего URI будет выглядеть api/AccountAPI/{id}

Для получения более подробной информации читайте документацию routing и action selection и проверить sample application