0

我不明白为什么 $.ajax() 函数无法访问我的 [WebMethod]。

这是下面的jQuery:

$('.BasketUpdaterSubmit').click(function() {
$.ajax({
    url: '/Ajax/AjaxCalls.aspx/UpdateAsyncBasket',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: "{'name' : 'Ivan'}",
    success: function(data) { alert(data); },
    error: function(xhr) { alert("Damn!"); }
});

这是 C# 代码:

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string UpdateAsyncBasket(string name)
    {
        // random stuff
        return "Received : \t " + name;
    }

当我在 return 语句上放置一个断点时,我似乎永远不会到达那里。我究竟做错了什么?

4

4 回答 4

1

尝试 aGET而不是 a POST。我有一些使用类似 javascript 可以正常工作的 web 方法,但是用这个而不是仅仅修饰了方法[WebMethod]

[WebMethod, ScriptMethod(UseHttpGet = true)]

然后确保您的 ajax 调用指定 GET:

$('.BasketUpdaterSubmit').click(function() {
$.ajax({
    url: '/Ajax/AjaxCalls.aspx/UpdateAsyncBasket',
    type: 'GET',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: "{'name' : 'Ivan'}",
    success: function(data) { alert(data); },
    error: function(xhr) { alert("Damn!"); }
});
于 2013-05-15T15:15:35.237 回答
1

根据我对这些东西的经验,我认为 JS 必须放在 .NET 的页面加载 javascript 函数中才能访问 C# web 方法。

function pageLoad(sender, eventArgs) { }

于 2013-05-15T15:06:07.133 回答
1

试试这个代码,

$(document).on("click",".BasketUpdaterSubmit",function(){    
    $.ajax({
        url: '/Ajax/AjaxCalls.aspx/UpdateAsyncBasket',
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: "{'name' : 'Ivan'}",
        success: function(data) { alert(data); },
        error: function(xhr) { alert("Damn!"); }
    });    
});

而 web.config 您必须在该部分中添加以下system.web部分

<webServices>
  <protocols>
    <add name="HttpGet"/>
    <add name="HttpPost"/>
  </protocols>
</webServices>

上面的代码应该可以工作(在我的机器上测试过)。我对您的最佳建议是为此创建一个 Web 服务。所以你可以省略页面生命周期。您可以参考以下示例以了解如何正确操作 http://tutorials.cmsnsoftware.com/2011/01/how-to-call-csharp-function-in-ajax.html

于 2013-05-15T15:08:36.053 回答
0

我们弄清楚发生了什么。似乎有一个默认的 ajax 设置函数干扰了我的 jquery 函数并且在测试时没有继续。最可能的原因是参数处理不当。回复晚了非常抱歉。谢谢你们。

于 2013-05-21T06:51:50.940 回答