2011-07-07 18 views
6

コントローラ機能にいくつかのAjaxデータを投稿して戻すにはどうすればよいですか? 1つの整数を関数にポストし、もう1つの整数(IDがポストされているアイテムの総投票数)を取得し、成功したらその投票数をエコーし​​ます。 コントローラ機能に "id"をどのようにポストすることができるのか分かりません。私はあなたとPHPにajaxデータを投稿してデータを返す

{data:the_id} 

が混乱していると思うのコントローラで

//post this integet 
the_id = $(this).attr('id'); 

     $.ajax({ 
      type: "POST", 
      data: the_id, 
      url: "http://localhost/test/index.php/data/count_votes", 
      success: function(){ 
       //the controller function count_votes returns an integer. 
       //echo that with the fade in here. 

       } 
      }); 

答えて

13
$.ajax({ 
      type: "POST", 
      data: {data:the_id}, 
      url: "http://localhost/test/index.php/data/count_votes", 
      success: function(data){ 
       //data will contain the vote count echoed by the controller i.e. 
       "yourVoteCount" 
       //then append the result where ever you want like 
       $("span#votes_number").html(data); //data will be containing the vote count which you have echoed from the controller 

       } 
      }); 

$data = $_POST['data']; //$data will contain the_id 
//do some processing 
echo "yourVoteCount"; 

明確化

:私のコードを参照してください。

success:function(data){ 

両方dataあなたは、JSのために

success:function(vote_count){ 
$(span#someId).html(vote_count); 
+0

あなたは、私は、機能をコントローラにIDをpostng後もしかして関数内にちょうどエコーする必要がありますか?$( "span#votes_number")で成功したら$データを表示したいhtml(number); ' – billa

+0

' $ data'がクライアントから送信したIDを受け取るのを見てくださいそのIDの基盤の側にあなたはおそらくいくつか行います処理し、 'total votes'を計算し、あなたが計算して' success'コールバックで受け取った 'voteCount'を' echo'すると、 'voteCount'を表示できます。見て – Rafay

+0

ありがとう。それは動作しますが、なぜ私は 'エコー" yourVoteCount ";'コントローラの番号で、しかし、私はあなたのVoteCountを返す場合は動作しません 'エコー"場合は、私は成功のための任意のデータを取得しません。どういう理由ですか?再度、感謝します。 – billa

3

ように変更で

data: {id: the_id} 
... 
success: function(data) { 
     alert('the server returned ' + data; 
    } 

$the_id = intval($_POST['id']); 

を試すことができ、独自の明確さのために異なっていますPHP

+0

ありがとう、これは私が探しているものです。コントローラにIDをポストする必要があり、コントローラは別の整数($ vote_count)を返します。これを投稿する必要があります。しかし、私は正しくあなたの例をコントローラにデータではなく、コントローラに投稿するIDを警告する場合は正しく理解しています。 – billa

3

count_votesはどのように見えますか?スクリプトですか?あなたがajax呼び出しから戻ってくるものは、単純なエコーを使って取得できます(もちろん、JSONやxmlを使うこともできますが、この単純な例では、count_votes.phpに何かを出力する必要があります):

$id = $_POST['id']; 

function getVotes($id){ 
    // call your database here 
    $query = ("SELECT votes FROM poll WHERE ID = $id"); 
    $result = @mysql_query($query); 
    $row = mysql_fetch_row($result); 

    return $row->votes; 
} 
$votes = getVotes($id); 
echo $votes; 

これは単なる擬似コードですが、あなたのアイデアを与える必要があります。今までに何がcount_votesからのエコーはあなたのAJAX呼び出しで、「データ」と返されているものになります。

+0

count_votesは、公開されたIDのdbから(整数)投票数を取得するだけです。私のAjax関数では、成功すると、この番号を取得して、 '$(" span#Vote_number ")のようにエコーすることができます。html(number); ' – billa

+0

あなたの例を使用すると、" count_votes "スクリプトから出力される値は"データ "javascript変数として解釈されるので、$(" span#votes_number ")。ありがとうございます。 – serialworm

+0

私はコントローラーの$票をエコーし​​たら、なぜ私はなぜ働くのだろうかと思っていますが、私が$票を "返す"場合は動かないでしょうか? – billa

関連する問題