我的aspx页面中有以下JQuery来调用函数背后的代码
onDelete: function (item) {
//Some Code
$.ajax({
type: "POST",
url: 'Page_Name.aspx/callmethod',
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json"
});
}
我正在调用以下方法
[WebMethod]
public static void callmethod()
{
Page_Name call = new Page_Name();
call.Function();
call.Function_Structure();
call.Function_items_Structure();
call.OClear();
call.PClear();
call.IClear();
}
我曾经尝试过很多方面,但它没有任何帮助,但任何一个人都指出了我在这里可能出错的地方
答案 0 :(得分:2)
你想要完成的事情本质上是不可能的。在您的web方法中,我看到以下几行:
call.pnlCH.Visible = false;
call.pnlPdtl.Visible = false;
您尝试更改ASP.Net表单元素的属性,但不使用回发操作。如果您没有回发,ASP.Net将不会为您重新呈现您的页面!它只返回你告诉webmethod返回的内容,在你的情况下是void
。
有两种方法可以解决这个问题,我不确定你想要的是什么:
选项1 - 无需ASP.Net干扰
如果你只想改变一些元素的可见性,你可以通过jQuery来做到这一点,你不需要你的后端。
$("#myElement").show();
$("#myElement").hide();
对于ASP.Net控件,您将想知道clientId。
var clientId = <%= pnlCH.ClientID %>;
$("#" + clientID).hide();
选项2 - 需要ASP.Net
如果你需要你的后端代码(例如从数据库中查找内容,或任何其他正当理由),纯粹通过jQuery完成它并不会有所帮助。在这种情况下,您要做的是执行常规回发方案。
将页面回发意味着ASP.Net将再次呈现您的页面。然后将呈现您对表单元素所做的任何更改。
这里需要注意的是,要让ASP.Net重新渲染您的页面,需要回发。
总而言之,我不确定您希望/需要采用哪种方式。但是,由于ASP.Net和客户端异步调用的工作方式,您当前的方法虽然在语法上有效,但根本不起作用。
答案 1 :(得分:2)
尝试将{}
用于您的数据,如果您没有发送任何参数,"{}"
将被视为字符串或不包含数据参数。
onDelete: function (item) {
//Some Code
$.ajax({
type: "POST",
url: 'Page_Name.aspx/callmethod',
// data: "{}",
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json"
});
}
答案 2 :(得分:0)
尝试在$ ajax调用中添加错误函数,并查看返回的错误。
data: {},
dataType: "json",
error: function(jqXHR, textStatus, errorThrown ) {
// debug here
alert(jqXHR);
},
success: function() ...