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

jquery回传函数传值问题,求高手进,分不够再加。
function test
{
var ilat=0, ilng=0;

$.get("Read.asp",function(data){
  //data的傎是“100,200”
  tmp = data.toString().split(",");
  ilat = parseFloat(tmp[0]);
  ilng = parseFloat(tmp[1]);
});

  alert(ilng+ilat);//此处外部引用,值还为0;
}

 ---->在这个外部值不是300,还是0呀,郁闷,传不出来呀。怎么办,求高手解释!

------解决方案--------------------
function(data){
//data的傎是“100,200”
tmp = data.toString().split(",");
ilat = parseFloat(tmp[0]);
ilng = parseFloat(tmp[1]);
}
这儿是定义函数,又不是调用函数,你在这儿怎么可能把参数传进去?

很简单这样改:
function test
{
var ilat=0, ilng=0;

$.get("Read.asp",function(){fn(data);});
function fn(data){
//data的傎是“100,200”
tmp = data.toString().split(",");
ilat = parseFloat(tmp[0]);
ilng = parseFloat(tmp[1]);
}
alert(ilng+ilat);}
 

------解决方案--------------------
ajax是异步的,alert时值还没传回来。
------解决方案--------------------
async 设置为false 同步
------解决方案--------------------
5楼正解! ajax异步的话,写在回调函数里就行了。
JScript code
function test(){
    var ilat=0, ilng=0;
    
    //代码1
    $.get("Read.asp",function(data){
        //代码3
        //data的傎是“100,200”
        tmp = data.toString().split(",");
        ilat = parseFloat(tmp[0]);
        ilng = parseFloat(tmp[1]);
        
        //在此处接着做其它事情
        alert(ilng+ilat);
    });
    
    //代码2:此处执行时,代码3还未被执行
    //alert(ilng+ilat);
}

------解决方案--------------------
改成$.ajax,配置为同步的
JScript code
function test{
var ilat=0, ilng=0;
$.ajax({
type:'GET'
,url:'Read.asp'
,cache:false
,async:false//////////
,success:function(data){
  //data的傎是“100,200”
  tmp = data.toString().split(",");
  ilat = parseFloat(tmp[0]);
  ilng = parseFloat(tmp[1]);
}
});
/*$.get("Read.asp",function(data){
  //data的傎是“100,200”
  tmp = data.toString().split(",");
  ilat = parseFloat(tmp[0]);
  ilng = parseFloat(tmp[1]);
});*/

  alert(ilng+ilat);//此处外部引用,值还为0;
}