【问题标题】:Can't get Pagemethods to work c# asp.net ajaxc#asp.net ajax 无法让 Pagemethods 工作
【发布时间】:2016-08-28 18:20:35
【问题描述】:

我已经尝试了一段时间。我有一个 jquery 数据表,我在表上设置了一个 onclick 方法。我知道点击是有效的,因为我设置了一个警报来给我一行数据。我的下一步是从第 0 列获取一条数据“Quote_Num”一个整数。并将其设置为会话变量(使用 pagemethods),然后调用查找此变量的报价表单,如果存在,则使用信息设置表单从我的数据库。长话短说,您单击报价表中的行,您将获得一个包含报价数据的页面。

当我单击 Quote 表中的一行时,我被重定向到 quote.aspx,但未设置会话变量。所以程序到达 OnSuccessCallBack 方法,但从不执行 c# 方法中的代码。我在 c# 方法中设置了一个断点,但从未到达。 ajax 响应似乎是整个网页。我还有一个脚本管理器,在母版页中将 pagemethods 设置为 true。

aspx

 $('#Quote').dataTable({
          "info": false,
          "scrollY": "100px",
          "scrollCollapse": true,
          "paging": false,                                                              
          "lengthChange": false,
          "columnDefs": [{
              "targets": 0,
              "visible": false,
              "searchable": false
          }]                                                    
      });

      var qTable = $('#Quote').DataTable();

      $('#Quote tbody').on('click', 'tr', function () {
          var quote = qTable.row(this).data()[0];
          PageMethods.quoteAdd(quote, OnSuccessCallback, OnFailureCallback);
      });

  })

  function OnSuccessCallback() {
      document.location.href = "QuoteFrm.aspx";
  }

  function OnFailureCallback() {
      alert('Error');
  }

cs;

     [WebMethod]
    public static void quoteAdd(int Quote_Num)
    {
        Page objp = new Page();
        objp.Session.Add("Quote", Quote_Num);

    }

【问题讨论】:

    标签: javascript c# jquery asp.net ajax


    【解决方案1】:

    您需要在您的网络方法中enableSession。像这样。

    //cs head
    using System.Web.Services;
    
    [WebMethod(EnableSession=true)]
    public static void addQuot(string name)
    {
        //this is how to access Session object in a static method
        HttpContext.Current.Session["name"] = name;
    }
    

    【讨论】:

    • 感谢您的意见,亚历克斯。进行了建议的更改,但仍然无法正常工作。我在 addQuote() 方法中放置了一个断点,但从未到达。只需打开没有会话变量的 quoteFrm.aspx。
    • 检查您的控制台。有没有错误?还要检查请求和响应。
    • 没有控制台错误,响应似乎是一个网页我使用了 chrome 开发者工具网络部分它显示了 addQuote 我选择了它然后检查了响应
    • 为了测试目的将void更改为stringreturn HttpContext.Current.Session["Quote"];。将 window.location... 更改为 console.log(data)。将参数data 添加到function OnSuccessCallback(data){...}。检查请求 (POST)。应该是{"Quote_Num":1}。确保var quote = qTable.row(this).data()[0];int
    • 好的,我将 void 更改为字符串,并将 return httpCon................ 添加为字符串(不喜欢对象到字符串)。将 document.location........ 更改为 console.log(data)。这给了我一堆 html 到控制台。不知道如何检查请求(POST)并且不知道如何验证 var quote 是 int 除了列包含的内容(来自数据库的整数标识字段)
    猜你喜欢
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2017-12-12
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多