2009-07-25 7 views
0

私はかなり基本的なものを逃していると思います。誰かが私を埋めることができると思います。私は2つの場所からajax呼び出しを使用しました。だから私は呼び出しを値を返すことによってその呼び出しを再利用しようとしています。だから、どこか別の JQueryのAjaxコールから値(xml)を返す方法はありますか

function getInfo() 
{ 
    $.ajax({ 
    type: "GET", 
    url: "../ajax.aspx?action=getInfo&id=4", 
     dataType: "xml", 
    async: false, 
    error: function() { 
     alert("Something went wrong."); 
    }, 
    success: function(xml) { 
      // Do some extra work here 
    $(xml).find("room").each(function() { 
     // Do something based on the xml 
    }); 
    // Something else can use this XML so return it too. 
      // Why does this return not work??? 
      return xml; 
    } 
}); 
} 

はスクリプトで、私はその機能

var xml = getInfo(); 
// Try do something with it now but it says that it is undefined 

を呼び出していると私が言うとき、それは私がFirebugの話してい未定義であると言う:それは次のようになります。

答えて

0

非同期機能を無効にすることは、非常に優れたAJAXプログラミングスタイルではありません。あなたはこの技術の多くの利点を失うでしょう。同期要求が 要求がアクティブである間 は、任意のアクションを無効にし、ブラウザをロックし、一時的に こと

注:jQueryのドキュメントから 。

とにかく行う必要がある場合: $ .ajaxは、作成するXMLHTTPRequestオブジェクトを返します。そして、あなたのgetInfoメソッドも同様にそれを返す必要がありますので、コードは次のように変更する必要があります:

function getInfo() 
{ 
    return $.ajax({ 
    type: "GET", 
    url: "../ajax.aspx?action=getInfo&id=4", 
     dataType: "xml", 
    async: false, 
    error: function() { 
     alert("Something went wrong."); 
    }, 
    success: function(xml) { 
      // Do some extra work here 
     $(xml).find("room").each(function() { 
      // Do something based on the xml 
     });  
     // Something else can use this XML so return it too. 
      // Why does this return not work??? 
      return xml; 
    } 
}).responseText; 
} 


var xml = getInfo(); 
+0

はいasync falseは良い考えではありません。それは私が様々な選択肢を持って遊んでいる間に偶然残されました。今削除されます。ありがとう:) – uriDium

+0

私は、非同期モードをオンにすると、関数呼び出しの直後に応答テキストを返すことができず、代わりにコールバックを使用することができない恐れがあります。 – Daff

関連する問題