繁体   English   中英

从ajax函数Jquery调用Code Behind方法不起作用

[英]Calling of Code Behind method from ajax function Jquery not working

我在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();
}

我已经尝试了很多方法,但是任何地方都无法正常工作,这可能是错误的地方

您试图实现的目标本质上是不可能的。 在您的网络方法中,我看到以下几行:

call.pnlCH.Visible = false;
call.pnlPdtl.Visible = false;

您试图更改ASP.Net表单元素的属性,但不使用回发操作。 如果没有回发,ASP.Net将不会为您重新呈现页面! 它只会返回您告诉Web方法返回的内容,在您的情况下为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和客户端异步调用是如何工作的,因此您当前的方法虽然在语法上有效,但根本无法使用。

尝试对数据使用{} ,如果不发送任何参数, "{}"将被视为字符串或不包含数据参数。

onDelete: function (item) {
      //Some Code
       $.ajax({
           type: "POST",
           url: 'Page_Name.aspx/callmethod',
          // data: "{}",
              data: {}, 
           contentType: "application/json; charset=utf-8",
           dataType: "json"
       });
    }

这里

尝试将错误函数添加到$ ajax调用中,然后查看返回了哪些错误。

data: {},
dataType: "json",
error: function(jqXHR, textStatus, errorThrown ) {
   // debug here
   alert(jqXHR);
},
success: function() ... 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM