2010-12-06 10 views
0
var = msg 
$.get('json-signup-erros.php',{},function(data){msg=data},'json'); 

function focushint() 
{ 
    alert (msg) // this works 
} 
$("input").focus(focus); 

alert(msg) //this doesnot work 

誰でも私の背の高い方法はありますか?カントへのアクセス外のjquery

答えて

8

あなたは非同期のAJAXリクエストを作成しています。

msgは、要求が行われた後にのみ値を含みます。

msgを使用するコードは、Ajaxリクエストのsuccessコールバック(function(data))に入れる必要があります。

(。そこasync: falseを使用して要求の同期を行うための理論的な可能性があるが、それは良い習慣ではありません、それはやむを得ないだ場合にのみ使用されるべきです)

+0

なりますfocushinのようなjQueryの関数の外MSGにアクセスしたい場合、私はどのように行うことができ、エラーMSGを取得し、JavaScriptを起動できるようにするwhantそれ? – dvdx

+0

@dvdxあなたは成功コールバックに開始したいJavascriptを入れてください。 –

+0

私は最初にデータを取得したいと思っていますし、サブミットから呼び出す関数のデータにアクセスする意思があります。 – dvdx

0

私はペッカに同意する - あなたはこのような何かを考慮する必要があります。

var = msg; 

$.get('json-signup-erros.php',{}, function(data, response) 
{ 
    if(response == "success") 
    { 
     msg = data; 
     alert(msg); 
    } 
    else 
    { 
     alert("Whoops something went wrong, please try again."); 
    } 
},'json'); 

function focushint() 
{ 
    alert (msg); // this works 
} 

$("input").focus(focushint); 

NB。私は$ .getに "成功"チェックを入れました。これはいつも見ています - あなたのAjax Httpリクエストが200応答を返すと仮定してはいけません!エラー(404,500,401)のために返されるデータがない場合、警告することはできません。また、else節を追加することで何か問題が発生したことをユーザーに警告することもできます。

0
var = msg; 

$.get('json-signup-erros.php',{}, function(data, response) 
{ 
    if(response == "success") 
    { 
     msg = data; 
     alert(msg); 
    } 
    else 
    { 
     alert("Whoops something went wrong, please try again."); 
    } 
},'json'); 

function focushint() 
{ 
    alert (msg); // this works 
} 

$("input").focus(focushint); 
alert(msg); // this is still does not work 

あなたが同じスコープに

+1

私の答えを読む。 **これは範囲の問題ではありません。**これは、警告を出した時点で終了していない要求の問題です。 –

関連する問題