【问题标题】:$.ajax and webmethod/pagemethods$.ajax 和 webmethod/pagemethods
【发布时间】:2009-09-22 09:10:32
【问题描述】:

我正在尝试调用一个没有任何参数的页面方法,但我似乎无法让它工作。

如果我在 pagemethod 中有一个参数,它可以正常工作。

$.ajax({
  type: "POST",
  url: "Default.aspx/getLastCallData",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    alert(msg.d);
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
    alert('Couldnt get call data');
  }
});

任何想法。

【问题讨论】:

  • “不工作”是什么意思?你有错误吗?什么都没有发生?
  • 页面上的方法永远不会被命中。错误回调的文本状态为 parsererror。
  • 我建议使用通用处理程序 (.ASHX) 而不是尝试让网页 (.ASPX) 返回 JSON 数据。
  • @stusmith - 为什么要麻烦?对 ASPX 页面的回调可以正常工作,并使您的代码与需要处理的 HTML 保持一致!

标签: asp.net jquery ajax


【解决方案1】:

由于您没有传递任何数据,因此您仍应添加数据参数并传递一个空的 JSON 对象。

通过发送一个空的 JSON 对象,jQuery 将正确发送您在 $.ajax 调用中定义的 contentType。这是 jQuery 的一个奇怪的怪癖,还没有真正解释过。

添加以下参数:

data: "{}"

所以你的电话应该是这样的:

$.ajax({
  type: "POST",
  url: "Default.aspx/getLastCallData",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    alert(msg.d);
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
    alert('Couldnt get call data');
  }
});

【讨论】:

    【解决方案2】:

    您是否尝试将POST 切换为GET?不知道这是否有什么不同,但由于您没有发送任何数据,因此您并没有真正发布任何内容,您只是在获取数据......可能会发生一些奇怪的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-28
      • 2014-06-27
      • 2015-08-14
      • 2011-10-13
      • 2014-08-11
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多