当这个函数被命中时,它不会在代码后面调用我的函数?为什么会这样呢?我该如何解决这个错误。
$(document).ready(function() {
$('[id$=btn_Update]').click(function() {
var reten = $('[id$=txt_Reten]').val();
var i=0;
var selectValues = "";
var ProdID = new Array();
$("#lst_ProdId option").each(function() {
selectValues = selectValues + $(this).text() + ",";
ProdID[i] = $(this).text();
i++;
});
for(var j=0; j < ProdID.length;j++)
{
// alert(ProdID[j]);
}
var params = "{'ProdID':'" + ProdID + "','RetenP':'" + reten + "'}";
$.ajax({
type: "POST",
url: "/ProductPricing/Products/RetenPeriod.aspx/UpdateRetenPeriod",
data: params,
contentType: "application/json; charset=utf-8",
datatype: "json",
success: function(result) {
alert("sucess");
},
error:function(e) {
alert(e.statusText);
// if(errorThrown != null)
// alert(textStatus+ ":"+errorThrown);
// else
// alert("fail");
}
});
return false;
});
return false;
});
这是我的代码背后的webmethod:
[WebMethod]
public static bool UpdateRetenPeriod(string[] ProdID,string RetenP)
{
for (int i = 0; i < ProdID.Length; i++)
{
update(ProdID[i],RetenP);
}
return true;
}
答案 0 :(得分:1)
是否调用error
方法?
您需要返回JSON。不是布尔值。也许像{success: true}
。
然后:
success: function(data) {
if(data.success) {
...
}
else {
...
}
}
jQuery期望JSON,如果它没有收到格式良好的JSON,就会抛出错误。另外,你得到的确切反应是什么?你可以使用像Firebug这样的东西来解决这个问题。
还有一件事。您能否验证是否可以成功点击该URL?您是否能够成功将浏览器指向http://your.url.here/ProductPricing/Products/RetenPeriod.aspx/UpdateRetenPeriod
?
另请参阅Pointy的解决方案。您的请求不太可能成功,因为您没有传入实际的对象字面值。
答案 1 :(得分:1)
您将参数作为字符串而不是对象文字传递:
var params = "{'ProdID':'" + ProdID + "','RetenP':'" + reten + "'}";
应该(几乎可以肯定)是:
var params = {'ProdID': ProdID,'RetenP': reten};
另外,你如何知道 ajax请求没有进入服务器?您是否尝试使用TamperData(适用于Firefox)或Firebug(也适用于Firefox)来跟踪HTTP请求?
答案 2 :(得分:0)
您是否在标记中定义了ScriptManager,并将EnablePageMethods设置为true?
另外,我相信你的params行应该是:
var params = "{ProdID:'" + ProdID + "', RetenP:'" + reten + "'}";
我在自己的应用程序中有几个函数可以这样做。你希望params的值看起来像这样:“{ProdID:'1,2',RetenP:'undefined'}”
您可以将断点置于警戒状态(e.statusText);看看错误信息是什么?
答案 3 :(得分:0)
您有错误消息..请尝试收到错误消息
我认为,您可以通过替换错误块
来使用它error:
function(XMLHttpRequest, textStatus, errorThrown){
alert( "Error Occured!" + errorThrown.toString());
}
我认为,问题出现在代码隐藏方法之后..如果在[web方法]有任何问题,那么ajax不会调用该方法..