Webmethod在ajax调用中没有被击中

Posted

技术标签:

【中文标题】Webmethod在ajax调用中没有被击中【英文标题】:Webmethod not getting hit in ajax call 【发布时间】: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 我在控制台中没有收到任何错误,这是问题 【参考方案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 方法。

以上是关于Webmethod在ajax调用中没有被击中的主要内容,如果未能解决你的问题,请参考以下文章

在对 WebMethod 的 jQuery AJAX 调用中获取空响应,但 Web 方法返回 JSON

JQuery ajax调用asp.net的webMethod

没有从 select2 ajax 调用 Asp dot net Web 方法

对 .NET WebMethod 的 jQuery 调用无序运行

使用jQuery AJAX调用WebMethod时,不会触发ASP.NET 4.0 Custom IHttpModule

JQuery ajax 调用 httpget webmethod (c#) 不工作