在jquery中使用JS变量

时间:2012-03-07 03:52:59

标签: jquery

 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函数中的数据,请告诉我如何使用此变量。

3 个答案:

答案 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:""},