2012-10-29 87 views
0

您好我试图从成功的jquery获取请求的get函数中获取返回值。从Jquery的Get函数返回值

我已经尝试了很多方法,但没有成功。两种形式,我有尝试是:

1)

GetResultOutput = function() { 
    var outPut = "No Data Found"; 
    var test = test(); 
    return test["outPut"]; 
} 

test = function() 
{ 
    outPut = "No Data Found"; 
    **return** $.ajax({ 
     type: "GET", 
     url: serviceUrl, 
     dataType: "xml", 
     success: function (xml) { 
        outPut = "done"; 
     } 
    }); 
} 

2)

GetResultOutput = function() { 
    outPut = "No Data Found"; 
    $.ajax({ 
     type: "GET", 
     url: serviceUrl, 
     dataType: "xml", 
     success: function (xml) { 
      outPut = "done"; 
     } 
    }); 
    return outPut; 
} 

但他们都没有给我任何结果..

第二届一个输出我因为没有找到数据。并且这是优选的一个Google搜索时第一次一个......结果不确定

+0

如果你希望这个调用是同步的,那么AJAX是这个工作的错误工具! – Jamiec

回答

0

您也可以通过让你的Ajax调用同步:

$.ajax({ 
     type: "GET", 
     url: serviceUrl, 
     async: false, 
     dataType: "xml", 
     success: function (xml) { 
      outPut = "done"; 
     } 
    }); 
+0

有你去冠军...感谢SilkAdmin – Luckyy

+0

你可以,但它使得浏览器锁定,而它的请求 - 有点否定ajax的目的首先。 – Jamiec

+0

这是真的..它可能发生...所以你建议下面的Fn你提供..因为这样,当我试图我得到错误 – Luckyy

1

,而不是试图让输出,然后对其进行处理,如:

var output = GetResultOutput(); 
process(output); 

您可以传递过程就像一个回调:

var GetResultOutput = function (callback) { 
    $.ajax({ 
     type: "GET", 
     url: serviceUrl, 
     dataType: "xml", 
     success: function (xml) { 
      callback(xml); 
     } 
    }); 
}; 

// usage: 
GetResultOutput(process); 
0

Ajax请求是异步的,这意味着您不能立即从呼叫中“返回”数据。这就是为什么所有形式的$.ajax采取一个或多个回调时,接收到的数据被调用,或发生错误等

这意味着你的方法必须是这样的:

GetResultOutput = function (callback) { 
    $.ajax({ 
     type: "GET", 
     url: serviceUrl, 
     dataType: "xml", 
     success: callback 
    }); 
} 

与回调看起来像:

function callback(xml) 
{ 
    console.log('done: ' + xml); 
} 
+0

tnx Jamiec,我更好地使用它作为异步 – Luckyy