2011-10-26 15 views
1

こんにちは私はこのコードを持っていますが、未定義のままです。

var projectID = $.getUrlVar('id'); 
var projectname; 

$.get('functions.php?func=projectname&id='+projectID, function(data) { 
    projectname = data; 
    alert(projectname+'<- see nice content'); 
}); 

alert(projectname+'<- no content :('); 

どうすれば "projectname"を外部から利用できるようにすることができますか?

(このコードを実際に実行すると、いいコンテンツの前にポップアップが表示されていましたが、これはページの最後のものですか?これはすべて空白なのですか?まだ設定されているように見えるdoesntの?

おかげ

+0

詳細は、特に 'success'コールバック関数の部分を読んでください。http://api.jquery.com/jQuery.get/ –

答えて

5

AJAXは、非同期的に実行successコールバック内に実装またはと呼ばれるべきです。

つまり、あなたの問題のための2つのソリューションがあります。

  1. は、匿名関数の外のデータにアクセスしようとしないでください。そこにすべての作業を行います(最適なソリューション)
  2. が偽(ひどい溶液)にそのasyncオプションをご$.get$.ajaxに変更し、設定されていないような
+3

2つ目のポイントは、使用されることを恐れて言及する価値がほとんどありません:P – alex

+1

OPがどのような非同期手段を知らない場合、最初の警告はサーバーからの応答を受信するまで実行されません。一方、$ .getの後のコードの残りの部分は引き続き実行されます。つまり、$ .getと第2の警告文は、互いに同期していません。したがって、これらは* a *同期です。 – erturne

2

ここでの問題は、AJAXリクエストが完了する前に、2番目のアラートが実際に実行されるということである。

「AJAX」の「A」は非同期の略です。

任意の機能AJAX要求から返されたデータに頼るnalityは唯一の(つまり、最初AAJAXでの頭字語が何の略かである)

+0

Hehe、' AJAX'略語についての同じ注意:-) – zerkms

0

XHRは非同期であるため、することができます。

ハンドル深い(projectnameが割り当てられた正しい値を有する)完全なコールバックから元と呼び出しスタックに子孫関数としてすべてのコード、。

関連する問題