ajax有时不会触发webmethod

时间:2011-03-09 23:29:16

标签: jquery ajax webmethod

我从jquery / ajax调用web方法。有时我的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);
}

2 个答案:

答案 0 :(得分:1)

我的猜测是,它只是在IE中不起作用。如果是这种情况,请参阅this answer

答案 1 :(得分:1)

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

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

}