【问题标题】:Webmethod not getting hit in ajax callWebmethod在ajax调用中没有被击中
【发布时间】:2017-02-22 19:25:30
【问题描述】:

我有角度 js 指令,我从那里调用一个函数,该函数具有对 c# webmethod 的 ajax post 调用。

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);
}

调用成功或失败都不会影响 Web 方法,而是控制在 test 函数内部。任何我出错的线索。

【问题讨论】:

  • 您的浏览器控制台中的错误代码是什么??
  • 函数调用test1,但你调用的是test。不可能吧?
  • @Hazonko 你在哪里看到 test1?
  • 尝试将data: json_object, 更改为data: JSON.stringify(json_object) -
  • @VenkataKrishnaReddy 我在控制台中没有收到任何错误,这是问题

标签: c# jquery angularjs ajax webmethod


【解决方案1】:

$.ajax 中没有 failure 回调:

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

将其更改为 error: 或使用承诺

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

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

它可能是由于 web 方法而出错,但您没有看到它。通过将 url 更改为明显不存在的内容来确认,例如“.../mywebmethodxxxxxxx”

【讨论】:

    【解决方案2】:

    将此添加到您的 ajax 调用中。它应该给你一个更好的信息来采取行动。

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

    【讨论】:

    • 你确定ajax调用中的路径是正确的吗?要么路径错误,要么需要传入更多参数,要么返回类型与预期不同。
    • 对,所以现在您知道您的 JS 正在调用 webmethod 并且 webmethod(C# 代码)给出了错误。调试 web 方法。
    猜你喜欢
    • 2015-03-27
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多