从ajax函数调用Code Behind方法Jquery无法正常工作

时间:2014-05-26 05:57:12

标签: c# jquery ajax web-services

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

我曾经尝试过很多方面,但它没有任何帮助,但任何一个人都指出了我在这里可能出错的地方

3 个答案:

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

Here

答案 2 :(得分:0)

尝试在$ ajax调用中添加错误函数,并查看返回的错误。

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