function lookup ( inputString )
{
var responseArray = new Array();
// alert(inputString);
$.post("/airmanage/networkadmin/partnership_management/getMainDist.jsp",user: ""+inputString+""},
function(data){
// alert(data);
responseArray = data.split(",");
//alert(responseArray.length);
});
return responseArray;
}
var x = new Array();
x = lookup("a");
alert ( x );
我是jquery的新手,所以你们可以帮助我。 我发出警报时,responseArray为空。
我无法使用js函数中定义的变量responseArray分配给jquery函数中的数据,请告诉我如何使用此变量。
答案 0 :(得分:0)
Ajax调用是异步的,因为调用函数并期望它返回ajax调用的结果是没有意义的。您的代码有很多错误,但即使您修复了它,您也会遇到这个问题。您需要做的是以太查找函数接受回调或直接在$.post
的回调中执行所有代码。
使用自己的回调进行查找异步:
function lookup(inputString, callback){
$.post(
"/airmanage/networkadmin/partnership_management/getMainDist.jsp",
{"user": inputSting},
function(data) {
if(typeof callback == 'function') {
callback(data);
}
});
}
// usage
lookup('theInputStringValue', function(data){
alert(data);
});
这样做的主要原因只是整合所有“查找”的URL和参数编码,并使其更容易使用,而不是在许多地方重复使用$.post
进行完全相同的调用。除此之外,你没有做任何特别的事情,你不能直接在提供给$.post
的回调中做。
答案 1 :(得分:0)
AJAX请求本质上是异步。这意味着您无法从函数返回它们的值。相反,您必须提供一个回调,然后开始使用值:
function lookup ( inputString, callback ) {
var responseArray = [];
$.post("/airmanage/networkadmin/partnership_management/getMainDist.jsp",
user: "" + inputString },
function ( data ) {
responseArray = data.split(",");
callback(responseArray);
});
}
lookup("a", function(arr) {
alert(arr);
});
如果您使用的是jQuery 1.7+,您还可以使用现在可用于AJAX请求的Promise接口:
function lookup ( inputString ) {
var responseArray = [];
return $.post("/airmanage/networkadmin/partnership_management/getMainDist.jsp", user: "" + inputString })
.pipe(function( data ) {
return data.split(',');
});
}
lookup("a")
.done(function(arr) {
alert(arr);
});
答案 2 :(得分:0)
您是否在user
之前错过了大括号?并且猜测你应该在inputString
之前使用逗号而不是加号。
不应该这个
$.post("/airmanage/networkadmin/partnership_management/getMainDist.jsp",user: ""+inputString+""},
是这个 -
$.post("/airmanage/networkadmin/partnership_management/getMainDist.jsp",{user: "", inputString:""},