ajax 有时不触发 webmethod

发布于 2024-10-21 09:56:30 字数 811 浏览 6 评论 0原文

我正在从 jquery/ajax 调用 webmethod。有时我的网络方法会被调用,有时则不会。我每次都传递相同的参数(数字 1 和一小段文本)。我还创建了处理程序来捕获错误并在 ajax 调用完成时显示代码。即使它没有调用我的 webmethod,状态也是“成功”。有什么想法吗?

jquery:

var txt = $(ta).val();

$.ajax({
    type: 'POST',
    url: 'Default.aspx/AddThread',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({ forumId: id, comment: txt }),
    dataType: 'json',
    error: function(jqXHR, textStatus, errorThrown) {
        alert("status: " + textStatus);
        alert("errorThrown: " + errorThrown);
    },
    complete: function (jqXHR, textStatus) {
        alert("status: " + textStatus);
    }
});

C#:

[WebMethod]
public static void AddThread(int forumId, string comment)
{
    DataAccess.AddNewThread(forumId, comment);
}

I'm calling a webmethod from jquery/ajax. Sometimes my webmethod gets called, other times it doesn't. I'm passing the same arguments every time (the digit 1 and a short string of text). I've also created handlers to catch error and show codes when the ajax call is complete. Even when it doesn't call my webmethod, the status is "success." Any ideas?

The jquery:

var txt = $(ta).val();

$.ajax({
    type: 'POST',
    url: 'Default.aspx/AddThread',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({ forumId: id, comment: txt }),
    dataType: 'json',
    error: function(jqXHR, textStatus, errorThrown) {
        alert("status: " + textStatus);
        alert("errorThrown: " + errorThrown);
    },
    complete: function (jqXHR, textStatus) {
        alert("status: " + textStatus);
    }
});

The C#:

[WebMethod]
public static void AddThread(int forumId, string comment)
{
    DataAccess.AddNewThread(forumId, comment);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哆啦不做梦 2024-10-28 09:56:30

我的猜测是它在 IE 中不起作用。如果是这种情况,请参阅此答案< /a>.

my guess is that it's just not working in IE. If this is the case, see this answer.

香橙ぽ 2024-10-28 09:56:30

如果您的参数与之前的调用相同,则不会调用代码

    //i.e.  
    AddThread(42, "Hello World");

    //then later you also call
    AddThread(42, "Hello World");

    //the web method wont invoke any code it will just return the cached result.`

来停止此行为,您可以将 CacheDuration 设置为 0,以便不再保存结果

[WebMethod(CacheDuration=0)]
public static void AddThread(int forumId, string comment)
{
    DataAccess.AddNewThread(forumId, comment);

}

If your parameters are the same as a previous call it wont invoke the code

    //i.e.  
    AddThread(42, "Hello World");

    //then later you also call
    AddThread(42, "Hello World");

    //the web method wont invoke any code it will just return the cached result.`

to stop this behavior you can set CacheDuration to 0 so that it no longer saves the result

[WebMethod(CacheDuration=0)]
public static void AddThread(int forumId, string comment)
{
    DataAccess.AddNewThread(forumId, comment);

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文