#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 #) выдает ошибку. Отладьте веб-метод.