ここで少し問題があります。私は自分の問題に関連しているように思われるさまざまな答えをチェックしましたが、これはうまくいかないようです。次のクエリとは異なり、最初にajaxクエリは未定義を返します
私はそうのようなリンクでページを持っている:
<a href="#" onclick="showData(id)">View</a>
そして、ここではjavascriptを
だvar queryResult;
function getData(id, callbackfn){
$.ajax({
type:"POST",
url:"http://url/to/query",
data:{id: id },
success: function(data){
callbackfn(data);
},
error: function(){
return "err";
}
});
}
function showData(id){
getData(id, Callback);
if(queryResult)
{
alert("Yahoooooo !");
}
else
{
alert("Nope !!!");
}
}
function Callback(data){
queryResult = data.length;
}
初めてクリックすると、「リンクがアラートボックスが起動し、私が手いいえ!!! "それ以降のクリックでは「Yahoooooo!」と表示されます。 ページをリロードしたら、もう一度 "Nope !!!"最初は初めてでしたし、その後は大丈夫です。したがって、queryResultは最初の呼び出しでは定義されていませんが、最初の呼び出しでは定義されていないようです。何か案が ?あなたはアヤックス このメソッドは、デフォルトでasyncronousあるを使用している
function Callback(data){
queryResult = data.length;
if(queryResult)
{
alert("Yahoooooo !");
}
else
{
alert("Nope !!!");
}
}
アクセスした時点では更新されていません。コールバックで操作します。 – Rayon
関数のためgetDataが非同期なので、ajax呼び出しが返される前に、評価される。したがって、この動作。 – Manish