Веб-метод не попадает в вызов ajax

#c# #jquery #angularjs #ajax #webmethod

#c# #jquery #angularjs #ajax #веб-метод

Вопрос:

У меня есть директива angular js, откуда я вызываю одну функцию, у которой есть вызов ajax post для c # webmethod.

 app.directive("fileread", [function () {
return {
link: function ($scope, $elm, $attrs) {
  $elm.on('change', function (changeEvent) {
   var data = "some json data";   
        test(data);           
      });
    };
  };
}]);
  

Функции, которые вызываются из директивы

 function test(json_object){
     $.ajax({
        type: "POST",
        url: "/sites/Demo/_layouts/15/demo/demowebmethod.aspx/mywebmethod",
        data: json_object,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnSuccess,
        failure: function(response) {
           alert(response.d);
        }
     });    
}

function OnSuccess(response) {
    alert(response.d);
}
  

Он не попадает в веб-метод, ни при успешном или неудачном вызове, но управление переходит внутрь test функции. Любые подсказки, где я ошибаюсь.

Комментарии:

1. какой код ошибки в консоли вашего браузера??

2. функция вызывается test1 , но вы вызываете test . не может быть, не так ли?

3. @Hazonko где вы видите test1?

4. попробуйте изменить data: json_object, на data: JSON.stringify(json_object)

5. @VenkataKrishnaReddy я не получаю никаких ошибок в консоли, в чем проблема

Ответ №1:

В failure $ .ajax нет обратного вызова:

 failure: function(response) {
     alert(response.d);
}
  

измените это на error: или используйте обещание

 error: function(response) {
     alert(response.d);
}
  

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

Возможно, что это ошибка из-за веб-метода, но вы этого не видите. Подтвердите, изменив URL на то, чего явно не существует, например «…/ mywebmethodxxxxxxx»

Ответ №2:

Добавьте это в свой вызов ajax. Это должно дать вам лучшее сообщение для действий.

  error: function (request, status, error) {
                alert('Error: '   error);
            }
  

Комментарии:

1. вы уверены, что путь в вызове ajax правильный? Либо путь указан неверно, либо вам нужно передать больше параметров, либо возвращаемый тип отличается от ожидаемого.

2. Хорошо, теперь вы знаете, что ваш JS вызывает веб-метод, а веб-метод (код C #) выдает ошибку. Отладьте веб-метод.