2012-03-07 19 views
0
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は空になります。jqueryでJS変数を使用する

js関数で定義された変数responseArrayをjquery関数のデータに割り当てることができません。この変数の使用方法を教えてください。

答えて

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にコールバックで直接行うことはできません。

+0

は、実際に私は 'で区切られた文字列として来るコールバックでデータを取得することができるよ、早く返事をありがとう、 '私はオートコンプリートjquery関数の入力としてそれを与えるために配列に変換しています。 – user1253741

+0

ありがとうございました....その作業 – user1253741

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要求に約束インタフェースが利用可能になりまし使うことができます。

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); 
    }); 
0

はありますあなたはuserの前に中括弧を紛失していますか?そして、inputStringの前にコンマをプラスしておくべきだと思います。

この

$.post("/airmanage/networkadmin/partnership_management/getMainDist.jsp",user: ""+inputString+""}, 

はこのすべきではない -

$.post("/airmanage/networkadmin/partnership_management/getMainDist.jsp",{user: "", inputString:""}, 
関連する問題