2011-01-06 15 views
6

以下は私が問題を抱えているコードです。基本的には、空の配列をグローバル変数(var playlist = [])として定義してから、jQuery $ .get呼び出しで要素を追加しようとしています。私がインターネットで読んだことから、私はこれを行うことができるはずです!次のコードはエラーを示しています: "未定義のメソッド 'play'を呼び出すことはできません。 playlist [0]は関数内で設定され、$ .get呼び出し内のプレイリスト[0]は予期される結果を通知しますが、関数外では持続しません。

​​

誰でも手助けできますか?

ありがとうございます!

答えて

2

$.getが返される前に、playlistが使用されている可能性があります.AJAX呼び出しが非同期であるためです。 の中で動作します。要求が完了するとそのコールバックが発生するため、期待されるデータが含まれます。

+0

うわー、$ .get関数の中でplaylist [0] .play()を動かすことはやりました。どうもありがとう! – Will

1

.getは非同期であり、したがってコールバック関数を提供する必要があります。あなたのgetはまだ進行中ですが、配列を実際に使用する前に配列を使用しようとしています。

6

これを行う必要はありません。私は私のプロジェクトで同じ問題に遭遇しました。あなたがしているのは、成功したコールバックの中で関数を呼び出してグローバル変数をリセットすることです。あなたが非同期のjavascriptをfalseに設定している限り、正常に動作します。ここに私のコードです。それが役に立てば幸い。

var exists; 

//function to call inside ajax callback 
function set_exists(x){ 
    exists = x; 
} 

    $.ajax({ 
    url: "check_entity_name.php", 
    type: "POST", 
    async: false, // set to false so order of operations is correct 
    data: {entity_name : entity}, 
    success: function(data){ 
    if(data == true){ 
     set_exists(true); 
    } 
    else{ 
     set_exists(false); 
    } 
    } 
}); 

if(exists == true){ 
    return true; 
} 
else{ 
    return false; 
} 

希望します。