2012-01-24 11 views
4

すべて、 jQuery/AJAXを使用して、基本的に誰かが好きな曲を保存するようにファイルを呼び出しています。そこで、基本的2つのdivを1つのAJAXレスポンスで更新する

echo "This text would go in response text 1"; 
echo "This text would go in response text 2"; 

私はsave_song.phpで複数のエコーのを持ってしようとしている。このような何かを持っているPHP側で次に

var html = $.ajax({ 
type: "POST", 
url: "save_song.php", 
data: "song_id=" + song_id + "&love_like_hate=hate", 
async: false 
}).responseText; 

$("#div_song_id_"+song_id).html(responseText1); 
$("#love_it").html(responseText2); 

:私は、次のような何かをしようとしています最初のエコーは最初のdivに行き、2番目のエコーは更新が必要な2番目のdivに移動します。どのようにこれを行うにはどのようなアイデア?

答えて

2

あなたのPHPコードは、JSON文字列をバック与えることができる:

<?php 
    echo json_encode(array(
     'test1' => 'This text would go in response text 1', 
     'test2' => 'This text would go in response text 2' 
    )); 
?> 

を次に、あなたはjQueryの中でそれを解析することができます

$.ajax({ 
    type: "POST", 
    url: "save_song.php", 
    data: "song_id=" + song_id + "&love_like_hate=hate", 
    dataType: 'json', 
    async: false, 
    success: function(response) { 
     if (response && response.text1 && response.text2) { 
      $("#div_song_id_"+song_id).html(response.text1); 
      $("#love_it").html(response.text2); 
     } 
    } 
}); 
4

私はjsonでこれを行います。あなたのPHPで連想配列をエコーし​​てjsonでエンコードすると、jQueryは自動的にjson文字列をオブジェクトに変換します。

また、何らかの区切り文字(|&*etc...など)で2つのステートメントをエコーアウトした後、javascriptで分割することもできますが、これを行うのがよりクリーンな方法だと思います。

//php 
echo json_encode(array(
    "responseText1" : "This text would go in response text 1", 
    "responseText2" : "This text would go in response text 2" 
)) 

//javascript 
$.ajax({ 
    type: "POST", 
    url: "save_song.php", 
    dataType: "json", 
    data: "song_id=" + song_id + "&love_like_hate=hate", 
    success:function(val){ 
     $("#div_song_id_"+song_id).html(val.responseText1); 
     $("#love_it").html(val.responseText2); 

    } 
});
+0

+1 JSONは間違いなくこれを行うにはどのような方法です。私はまた、このような詳細な説明や例を少し追加してサイトを追加しますhttp://net.tutsplus.com/tutorials/javascript-ajax/5-ways-to-make-ajax-calls-with-jquery/(2ブロック目、グーグル "jquery ajax json example"を検索した後の最初の作業ページ) – Vyktor

+0

良い感謝、本当に良いアヤックスを知らない。リンクありがとう – locrizak

+0

@locrizakコードをありがとう。私はこれをやろうとしましたが、アラート(val.responseText1)を試してみると、定義されていません。なぜこれが事実だろうか? – user1048676

関連する問題