【问题标题】:Why JQuery AJAX call is not working?为什么 JQuery AJAX 调用不起作用?
【发布时间】:2013-03-01 05:55:22
【问题描述】:

以下是我的 JQuery AJAX 方法:

function meFun() {
    alert('enter');

    $.ajax({
        type: "POST",
        url: "About.aspx/GetRes",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            // Do something interesting here.
            alert(msg);
        }
    });
    alert('end');

}

以下是我的按钮代码:

<input type="button" onclick="meFun();" value="Click me" id="btn" />

Folling 是我在 About.aspx 中的功能

Public Function GetRes() As Boolean
    Return True
End Function

meFun()方法调用成功,但没有调用GetRes(),AJAX调用也没有返回任何响应。

知道为什么吗?另外,请提出一种调试此类 AJAX 问题的好方法。

【问题讨论】:

  • 尝试为ajax请求指定一个错误回调,而不仅仅是一个成功回调。
  • jquery 是否已加载..?
  • 您在此 AJAX 请求中获得的 HTTP 状态代码是什么?使用此 AJAX 调用的 statusCode 函数。对于 AJAX 调试,我使用 firefox 的插件 Firebug,我可以在控制台中看到我的 AJAX 请求、参数和来自服务器的响应。
  • 你确定GetRes() 是一个返回json 的方法吗? Do you get any errors in the console?
  • 对于调试 javascript,没有什么比所有现代浏览器都提供开箱即用或通过扩展下载提供的 Web 开发工具更好的了。在 chrome/IE/firefox(如果安装了 firebug)中按 f12,它会出现。您可以设置自定义断点并观察表达式来暂停您的代码并单步执行它以及监控 http 流量。 http 流量将首先告诉您 ajax 是否正在调用服务器。这是一个好的开始

标签: asp.net ajax jquery


【解决方案1】:

首先,确保您的服务器端 GetRes 函数具有 WebMethod 属性(这是在 C# 中,我不知道您如何在 VB 中做到这一点)并使 GetRes 静态(或 VB 中的任何等价物)。

[WebMethod]
public static bool GetRes()
{
  return true;
}

然后,将 error 处理程序添加到您的 jQuery ajax 调用中:

$.ajax({
        type: "POST",
        url: "About.aspx/GetRes",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            // Do something interesting here.
            alert(msg);
        },
        error: function (data) {
        }
    });
    alert('end');

编辑:要调试,在错误处理程序中设置断点并检查data 参数。所有浏览器(好吧,我可以保证 IE、Firefox(带有 Firebug)和 Chrome)都有很好的脚本调试器。如果发生错误,data 中将有一个属性,我现在不知道它的名称,它详细解释了错误。

【讨论】:

    【解决方案2】:

    您正在以字符串格式返回数据,而您的 AJAX 调用需要 JSON 格式 所以在服务器端通过使用 newtonsoft 库或 asp.net 的内置 jsonconversion 机制将 TRUE 转换为 JSON 格式

    正如 svajger 所说,您必须将其声明为 webmethod,并且它必须是静态的,返回类型是首选字符串

    在成功处理程序中,您必须通过以下方式解析 json 数据 JSON.parse 方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-12
      • 2021-10-11
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 2011-09-18
      • 2015-08-14
      相关资源
      最近更新 更多