0

重複の可能性:
AJAX 関数から変数が返されない

私はこの機能を持っています:

   function getCompanyName(companyID) {

        $.getJSON('http://www.domain.com/' + companyID + '.json', function(companyData) {
            $.each(companyData, function(i,item){   
                result = item.name;
            });         
            return result;
        });
   };

getCompanyName(13)結果のように呼び出すとundefined、にアクセスすると、次の結果がwww.domain.com/13.json得られます。

[
  {
    id: 13,
    category_id: 2,
    name: "Company Name",
    phone: "333-333-3333",
    address: "Address",
    description: "Description",
    logo_url: "/system/businesses/logos/000/000/013/thumb/G13.jpeg?1348191485"
  }
]

誰かが私がここで間違っていることを教えてくれますか?

4

1 に答える 1

1

getCompanyName ()関数は非常に高速に実行を終了します。ajax リクエストが完了するずっと前に。したがって、次のように書くと:

vara=getCompanyName(companyID);の場合、応答がまだサーバーから返されていないため、結果は未定義になります (ただし、getCompanyName()関数は既に終了しています) 。

簡単に言うと、ajax 応答が完了するまで待機する必要があります (getCompanyName(companyID)関数が終了するまでではなく、-を削除してreturn result、結果を処理するために必要なすべての機能をコールバック関数内に配置するか、そこから他の関数​​を呼び出す.. ..

于 2013-01-20T17:07:08.763 に答える