2011-12-31 5 views
0

これを処理する最良の方法は何か分かりませんが、私がやろうとしていることはここにあります。ユーザーが写真を削除した後、2つの部門を新しい統計情報と新しいテーブルで更新する必要があります。これは最初に2つの関数を呼び出すことで行われます。どういうわけかjqueryでこれらのPHP関数を呼び出すことができますか、より良い方法がありますか?ここでjquery loadを使用してPHP関数を呼び出すことはできますか?

私の現在のコードスニペットは、次のようになります。

<?php 
include('header.php'); 
?> 

<script type="text/javascript"> 
$(document).ready(function() { 

    $('.image_result li').click(function() { 
     var imgInfo = $(this).attr('id').split(':'); 

     if(confirm('Are you sure you want to delete this image?')) { 
      $.post('delete_image.php?image_id=' + imgInfo[0] + '&user_id=' + imgInfo[1], function(data) { 

      // How can I update both divs (imageStats, and imageTable) by calling my two PHP functions? 

      }); 
     } 
    }); 
}); 
</script> 

<div id="imageStats" ><?php echo get_image_stats(); ?></div> 
<div id="imageTable" ><?php get_user_images(); ?></div> 
+0

先行研究はありますか? –

答えて

1

例えば、機能だけのものの出力を表示するファイルを作成します。

// Include or require the file that contains your functions HERE 

switch($_GET['action']) { 

    case 'get_stats': 
     echo get_image_stats(); 
     break; 

    case 'get_images': 
     get_user_images(); 
     break; 
} 
ajax.php

JS

$.post('delete_image.php?image_id=' + imgInfo[0] + '&user_id=' + imgInfo[1], function(data) { 

    $('#imageStats').load('new_php_file.php?action=get_stats'); 
    $('#imageTable').load('new_php_file.php?action=get_images');; 
}); 

注:あなたの特定の問題を解決する方法はたくさんあります。これは数えきれない実装のうちの1つに過ぎませんが、思考のための十分な食糧を与えるはずです。

1

PHPメソッド(get_image_stats()およびget_user_images())を呼び出して、delete_image.phpスクリプトがjquery ajax postメソッドから呼び出されたときに出力を返送してください。

と仮定すると、get_image_stats()は英数字の文字列を返します。get_user_images()は完全なHTMLテーブルを返し、「|」はありません。どちらの文字でも、私がすることはget_image_stats()get_user_images()の出力を "|"で連結し、それをエコーアウトすることですdelete_image.php

ポストの成功で、私は戻ってデータを分割して、このような統計情報と画像の更新になります。

var resp = data.split("|"); 
$('#imageStats').html(resp[0]); 
$('#imageTable').html(resp[1]); 

を、私はそれはあなたの既存のコードに少なくとも変化をもたらすだろうと思うので、私はこの方法をお勧めします構造。

+0

非常に賢い...私はいつもこのものを見逃しているようです...ありがとう! – Paul

+0

この時点で唯一の問題は、新しいテーブルがロードされた後に私のクリックイベントが失われてしまうことです。 – Paul

+0

質問を編集し、2つのPHP関数の出力、つまり新しい統計と新しいテーブルを追加してください。 – Abbas

関連する問題