87,921
社区成员
发帖
与我相关
我的任务
分享
function test()
{
var str = "";
$.getJSON
(
url,
{},
function(json)
{
//....操作代码
str = ...;
}
);
$().html(str);
}
现在遇到的问题是,getJSON执行的时候由于readystate还没有等于4,他会先把 $().html();执行完。
然后到readystate=4的时候才执行操作代码。这样str的值就赋不上了。请问解决方法是怎么样?
这是什么原因呢?
1、将异步改为同步
2、将html赋值操作放在json异步交互方法中
3、用setTimeout延时,或是用setTimeout在一定时间内赋值。直到返回的str不为null为止
原因是异步交互的时候,不会等待$.getJSON请求执行完了才执行下面的代码。而是执行后,直接运行后面的代码。
$.getJSON
(
url,
{},
function(json)
{
//....操作代码
str = ...;
$().html(str);
}
);
//$().html(str);//放到里面去
function test()
{
var str = "";
$.getJSON
(
url,
{},
function(json)
{
//....操作代码
str = ...;
$().html(str);
}
);
}