我从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);
}
答案 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);
}