getJSON顺序执行时间问题

songjd 2010-07-28 05:20:53

function test()
{
var str = "";
$.getJSON
(
url,
{},
function(json)
{
//....操作代码
str = ...;
}
);
$().html(str);
}
现在遇到的问题是,getJSON执行的时候由于readystate还没有等于4,他会先把 $().html();执行完。
然后到readystate=4的时候才执行操作代码。这样str的值就赋不上了。请问解决方法是怎么样?
这是什么原因呢?
...全文
287 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
songjd 2010-07-28
  • 打赏
  • 举报
回复
用$.ajaxSettings.async = false改成同步之后。是否需要
$.ajaxSettings.async = true改回来,
还是只是修改当次有效的?
抱抱我的小猫 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 songjd 的回复:]
只能放里面么?
[/Quote]

异步执行,意思是下面一起跑了,没跑完当然出错,只能丢里面跑同步
denken1015 2010-07-28
  • 打赏
  • 举报
回复
同情楼主。。getjson是异步执行的。。。
songjd 2010-07-28
  • 打赏
  • 举报
回复
只能放里面么?
hoojo 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 songjd 的回复:]
JScript code

function test()
{
var str = "";
$.getJSON
(
url,
{},
function(json)
{
//....操作代码
str = ...;
}
);
$().html(str);
}
现……
[/Quote]

1、将异步改为同步
2、将html赋值操作放在json异步交互方法中
3、用setTimeout延时,或是用setTimeout在一定时间内赋值。直到返回的str不为null为止

原因是异步交互的时候,不会等待$.getJSON请求执行完了才执行下面的代码。而是执行后,直接运行后面的代码。

$.getJSON
(
url,
{},
function(json)
{
//....操作代码
str = ...;
$().html(str);
}
);
//$().html(str);//放到里面去

抱抱我的小猫 2010-07-28
  • 打赏
  • 举报
回复
你把 $().html(); 放在 callback里面不就好了
zoujp_xyz 2010-07-28
  • 打赏
  • 举报
回复
这是异步操作。//写在回调函数里

function test()
{
var str = "";
$.getJSON
(
url,
{},
function(json)
{
//....操作代码
str = ...;
$().html(str);
}
);
}
兼哲 2010-07-28
  • 打赏
  • 举报
回复
把$().html(str);
放在getJSON的function里去,你放外面干嘛?ajax本来就有延迟

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧