您好我正在尝试从jquery Get get请求中获取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 :(得分: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);
答案 1 :(得分:0)
Ajax请求是异步的,这意味着您无法立即“返回”来自调用的数据。这就是为什么所有形式的$.ajax
都会在收到数据时调用一个或多个回调,或者发生错误等。
这意味着您的方法必须如下:
GetResultOutput = function (callback) {
$.ajax({
type: "GET",
url: serviceUrl,
dataType: "xml",
success: callback
});
}
回调看起来像:
function callback(xml)
{
console.log('done: ' + xml);
}
答案 2 :(得分:0)
您还可以使用以下方法使ajax调用同步:
$.ajax({
type: "GET",
url: serviceUrl,
async: false,
dataType: "xml",
success: function (xml) {
outPut = "done";
}
});