【问题标题】:ASP.NET: jQuery Ajax result not definedASP.NET:未定义 jQuery Ajax 结果
【发布时间】:2012-12-03 22:38:14
【问题描述】:

我有这个 jQuery ajax:

        // ... omitted code ...

        var data = "{'TagName':'" + TagName + "'}";

        var resultSet = 0;

        jQuery.ajax(
        {
            type: "POST",
            url: '<%= ResolveUrl("~/Webservices/TagWebServices.asmx/GetTagByTagName") %>',
            data: data,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (t)
            {
                resultSet = t.d;
            }
        });

        jQuery(this).after("<div style='color:#E3E3E3; margin-bottom:10px;'>" +
        resultSet.desc +
        "</div>" );

        // ... omitted code ...

问题是当我使用 Firebug 并在最后一行添加断点然后单击(继续)resultSet.desc 时,resultSet.desc 总是返回“未定义”。

【问题讨论】:

  • 欢迎来到 async 的精彩世界!你不能那样做。
  • 这是我第一次使用 jQuery ajax 但这是有道理的,这是我的一个愚蠢的错误。谢谢

标签: jquery asp.net ajax


【解决方案1】:

Ajax 默认是异步的。 您可以尝试设置 ajax 请求同步设置:async:false, 但这是一个不好的方法。

要走的路是在成功回调函数中编码你的逻辑,保持 'this' 对象上的引用。

var data = "{'TagName':'" + TagName + "'}";

        var resultSet = 0,
            that = this;

        jQuery.ajax(
        {
            type: "POST",
            url: '<%= ResolveUrl("~/Webservices/TagWebServices.asmx/GetTagByTagName") %>',
            data: data,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (t)
            {
                resultSet = t.d;
                 jQuery(that).after("<div style='color:#E3E3E3; margin-bottom:10px;'>" +
                    resultSet.desc +
                    "</div>" );
            }
        });

【讨论】:

    【解决方案2】:

    ajax 调用是异步的(根据定义...)。所以你必须把做作放在成功处理程序中:

    $.ajax({ ...
        success : function(t) {
            resultSet = t.d;
            jQuery(this).after("<div style='color:#E3E3E3; margin-bottom:10px;'>" +
                resultSet.desc +
            "</div>" );
        }
    )};
    

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 2014-03-01
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多