2012-03-16 11 views
0

サーバーへのajax呼び出しを行い、応答を使用して既存の文書コンテンツのセクションを置き換えたいとします。これらの方法の1つを他の方法よりも選択する理由はありますか?jQuery - ajax呼び出しを行うreplaceWithの相違点

オプション1 - ajax呼び出しを行い、エラー/成功関数からreplaceWithを実行します。例:

$.ajax({ 
     type  : 'GET', 
     url  : '/some/path/here', 
     success : function(data) { 
     // process data here 
     $('#container').replaceWith(processedData); 
     } 
}); 

オプション2 - Ajaxの呼び出しを行う機能を渡し、replaceWithを呼び出します。例:

$("#container").replaceWith(function(){ 
    var responseData; 
    $.ajax({ 
     type  : 'GET', 
     url  : '/some/path/here', 
     success : function(data) { 
     // process data here 
     responseData = processedData; // 
     } 
    }); 
    return responseData; 
}); 
+0

ProcessedDataは、任意の値を指定されることはありません:あなたはAJAX呼び出しから返されたデータの処理をexternaliseするために探している場合

は、ちょうどあなたが実行したい関数への参照としてsuccessパラメータを設定します。 –

答えて

4

2番目はオプションではありません。あなたが機能を取り出すとき。

function(){ 
    var responseData; 
    $.ajax({ 
     type  : 'GET', 
     url  : '/some/path/here', 
     success : function(data) { 
     // process data here 
     responseData = processedData; // 
     } 
    }); 
    return responseData; 
} 

これはundefinedを返します。時間関数が実行されて戻るとき、reponseDataundefinedです。将来的にのみ、関数が実行され、responseDataが設定されます。ただし、コードreplaceWithは既に実行を終了しています。呼び出しは非同期に実行と同じように、オプション2が動作しないよう

オプション1.

+0

ご協力いただきありがとうございます! – csturtz

2

オプション1で行くには、あなたの唯一の選択肢です。これは、関数が何も返さないことを意味します。

$.ajax({ 
    type: 'GET', 
    url: '/some/path/here', 
    success: processData 
}); 

function processData(data) { 
    // process data here 
    $('#container').replaceWith(data); 
} 
+0

お世話になりました! – csturtz

関連する問題