【问题标题】:Ajax call not workingAjax 调用不工作
【发布时间】:2012-09-05 13:08:53
【问题描述】:

我正在对 C# 函数进行 ajax 调用,但它没有被调用。

这是 ajax 调用:

$('#button1 button').click(function () {
    var username = "username_declared";
    var firstname = "firstname_declared";
    $.ajax({
        type: "GET",
        url: "practiced_final.aspx/ServerSideMethod",
        data:{username1:username,firstname1:firstname},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            $('#myDiv').text(msg.d);
        },
        error: function (a, b, c) {
            alert(a + b + c);
        }
    });
    return false;
});

这是 C# 代码:

[WebMethod]
public static string ServerSideMethod(string username1, string firstname1)
{
    return "Message from server with parameter." + username1 + "hello" + firstname1;
}

此方法未命中并显示如下错误消息:

object XMLHttpRequest]parsererrorundefined

我们将不胜感激。

【问题讨论】:

  • 我将首先使用 Fiddler 检查发送和接收的数据。
  • 除了使用 Fiddler 检查请求外,您还可以在浏览器中打开它并查看来自 IIS 的错误消息。

标签: c# javascript jquery ajax


【解决方案1】:
$('#button1 button').live('click', function () {
            var username = "username_declared";
            var firstname = "firstname_declared";
            $.ajax({
                url: "/practiced_final.aspx/ServerSideMethod", type: "GET", dataType: "json",
                data: JSON.stringify({ username1: username, firstname1: firstname }),
                contentType: "application/json; charset=utf-8",
                success: function (msg) {
                    $('#myDiv').text(msg.d);
                },
                error: function (a, b, c) {
                    alert(a + b + c);
                }
            });
        });

$('button#button1') 或 $('#button1') 或 $('#button1 button') 还要检查你的选择器。在点击事件中放置一条警报消息并查看

【讨论】:

  • 它没有工作,但现在错误消失了。C#方法仍然没有成功
  • 选择器没问题。我用警告框检查了它。
  • k.你使用的是 mvc 3 还是 asp.net?
【解决方案2】:

终于成功了。这是最终的代码。 感谢大家的明智回复。

                $.ajax({
                 type: "POST",
                 url: "practiced_final.aspx/hello_print",
                 data: "{}",
                 contentType: "application/json; charset=utf-8",
                 dataType: "json",
                 async: true,
                 cache: false,
                 success: function (msg) {
                 $('#myDiv').text(msg.d);
                 }
                 })
                 return false;

享受吧。

【讨论】:

    【解决方案3】:

    在你的代码中我可以看到:dataType: "json",

    但是您不是通过 C# 函数发送 Json...当您告诉 ajax dataType 是 json 时,它将 JSON.parse() 响应。也许这就是失败的地方。 尝试更改 dataType,或删除它(jQuery 会尝试猜测它)。

    【讨论】:

      【解决方案4】:

      请在 Jquery 函数中更改以下行。

      数据:{username1:username,firstname1:firstname},

      data:"{'username1':'" + username + "','firstname1':'" + firstname + "'}",

      希望这会对你有所帮助。

      【讨论】:

      • 用户输入应该使用JSON.stringify()转义
      • 请将类型 Get 更改为 POST。
      • 是的,将其更改为 post 是有效的。你能告诉我为什么 GET 不起作用谢谢。
      • 希望对您有所帮助。 stackoverflow.com/questions/10750631/…
      【解决方案5】:
        $('button#button1') //Or check selector put one alert inside onclick
        $('#button1').live('click', function () {
                      var username = "username_declared";
                      var firstname = "firstname_declared";
                      $.ajax({
                          type: "GET",
                          url: "practiced_final.aspx/ServerSideMethod",
                          data: JSON.stringify({ username1: username, firstname1: firstname }),
                          contentType: "application/json; charset=utf-8",
                          dataType: "json",
                          success: function (msg) {
                          $('#myDiv').text(msg.d);
                          },
                          error: function (a, b, c) {
                              alert(a + b + c);
                          }
                          })
                          return false;
      

      可能有帮助

      【讨论】:

      • 它没有工作,但现在错误消失了。C#方法仍然没有成功。
      • :) k gud 我会去找它,也许我会在某个时候得到一些东西
      • 用户输入应该使用JSON.stringify()转义
      • @ThulasiRam 同样的问题。没有错误,但方法无法命中...:(顺便说一句谢谢。
      【解决方案6】:

      尝试更改此行:

      data:{username1:username,firstname1:firstname},
      

      data:JSON.stringify({username1:username,firstname1:firstname}),
      

      编辑:

      我不确定这是否是问题的原因,但这是我注意到我们的 jQuery ajax 调用之间不同的一件事。此外,更改了结果字符串以反映@dana 在我的答案的 cmets 中的批评。

      【讨论】:

      • 用户输入应该使用JSON.stringify()进行转义。
      • 这只是为了让ajax调用更不容易出错还是JSON.stringify()背后有更多的理由?
      • 想想这样的情况:var firstname = "D'Angelo"。单引号需要用反斜杠转义以创建有效的 JSON 字符串:D\'AngeloJSON.stringify() 负责处理该案件和其他许多案件。
      • 很高兴知道这一点。在您发表评论之前,我不知道JSON.stringify(),所以感谢您提供的信息。我将编辑我的答案,尽管我的答案似乎还不够。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多