[英]ASP.NET: jQuery Ajax result not defined
I have this jQuery ajax: 我有这个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 ...
The problem is that resultSet.desc always returns "undefined" BUT when I use Firebug and add a breaking point in the last line and then click (Continue) resultSet.desc works as expected. 问题是resultSet.desc总是返回“undefined”但是当我使用Firebug并在最后一行添加一个断点然后单击(继续)resultSet.desc按预期工作。
An ajax call is Asynchronous (by definition...). ajax调用是异步的(根据定义......)。 So you have to put the affectation in the success handler:
所以你必须在成功处理程序中加入效果:
$.ajax({ ...
success : function(t) {
resultSet = t.d;
jQuery(this).after("<div style='color:#E3E3E3; margin-bottom:10px;'>" +
resultSet.desc +
"</div>" );
}
)};
Ajax is asynchronous by default. 默认情况下,Ajax是异步的。 You could try to set ajax request synchronous setting:
async:false,
but this is a bad way. 您可以尝试设置ajax请求同步设置:
async:false,
但这是一种不好的方法。
The way to go is to code your logic in the success callback function keeping ref on 'this' object. 要做的就是在成功回调函数中编写逻辑代码,保持对'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>" );
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.