日期:2014-05-16  浏览次数:20376 次

想请问下jquery ajax的问题
小的今天使用jQuery ajax 时候,遇到点“进程”(不知道这词用得对不对)问题;大虾们请看大致的代码示意阿,太长了,不能全写出来:
$(document).ready(function(){
  $("#XXX").append("<input type='hidden' value='' id='hidden_1'"); 
  function1(){ };  
   
  alert($("#hidden_1").val()+'3rd');

})


function1(){
 
  jQuery.getJSON("requestURL",function(data){
   
  alert(data.XXX + '1st');
  $("#hidden_1").val(data.xxx);
  })
  alert($("#hidden_1").val() + '2nd');
}

弹出结果顺序为
 2nd 
 3rd
 1st

猜想是在function1()里面没有等待ajax请求结束直接进行下一步了,请问这个问题该怎么规避和解决,请大虾们不惜赐教阿

------解决方案--------------------
原因是你的function1里面的getJSON是异步的(默认就是异步),异步的意思就是新开一个后台线程执行ajax,前台线程继续往前走。

改成同步就行了,不过ajax.getJSON没有办法设置为同步。

参考这个帖子:http://topic.csdn.net/u/20101020/11/c9bf149d-29c9-44c3-9ed7-e598a9aecde9.html


------解决方案--------------------
$.get(url,{},callBack);
function callBack(data){
alert(data);
}
var d=function hh(data){
callBack(data);
}