1

JSON結果を作成するajaxでphpスクリプトをロードする必要があります。getEvent.php の例は次のとおりです。

[{"id":"1","start":"Wed Jul 18 12:00:00 GMT+0200 2012","end":"Wed Jul 18 13:30:00 GMT+0200 2012","title":"leer"}]

この結果を別の関数に送信するには、変数に代入できなければなりません。いろいろ試してみましたが、一向にうまくいきません。

function loadEvents(){
   var cdata;

   $.getJSON({
     type: 'GET',
     url: 'getEvent.php',
     asynch:false,
     contentType: 'application/json; charset=utf-8',
     dataType: 'json',

     success: function(jsonData) {
        cdata = jsonData;
     },
     error: function() {
       alert('');
     }

   });
   return cdata;
 }

cdata = jsonData; 動作しないようです

結果 (jsonData) の一部を変数に代入する方法しか見つけられませんでしたが、jsonData 全体を返すことはできないようです。

誰でも私の問題を解決できますか? 完全な jsonData を別の関数に返す必要があります...

ありがとう

4

2 に答える 2

1

まず、なぜ getJSON を使用しているのですか? $.ajax は、あなたの要件により適しているようです。

第二に、サーバーが応答する前に、cdata を返す瞬間が来ます。サーバーが応答すると、成功ハンドラーが実行されます。現在のケースでは、探しているデータを取得できません。:)

これを回避するためにできることは、変数 cdata をグローバルにすることです。そして、成功ハンドラーの cdata に値を割り当てるだけです(すでに行っています)

PS : 変数をグローバルにすることは、適切なプログラミング手法ではありません。(または、少なくともグローバル変数を使用することはお勧めしません)

戻り値をどのように使用するかなど、特定の要件を投稿してください。その世界的な獣をどのように避けることができるかを見ることができるように.

例:

success: function(result){
yourTargetFunction(result); // call the target function with returned data as a paramenter to it
}
于 2012-07-27T09:30:06.813 に答える
1

getJSONは非同期関数です (URL のみを想定し、設定オブジェクト ( Docu ) は想定していません)。つまり、サーバーからの応答が完了するとすぐに結果が返されます。その間、関数は実行を続けます。したがって、戻った時点ではcdata、成功関数はまだ実行されていません。コールバックを使用するか、関数を同期に設定する必要があります(これを実行しようとしていますが、そこにタイプミスがあります-hasyncなしです-追加の設定を渡したい場合は、使用できませんが、使用する必要getJSON()があります$.ajax().

呼び出しを同期にする代わりに、コールバックを使用する方がおそらくより良い解決策です。

それ以外の

 success: function(jsonData) {
    cdata = jsonData;
 },

書きます:

 success: function(jsonData) {
    workWithResult(jsonData);
 },

 // this is called the "callback" function, it is executed when the ajax-request
 // returned successfully
 function workWithResult(data){
     // now you can work with the data, which is guaranteed to exist
 }
于 2012-07-27T08:56:20.567 に答える