2011-07-07 68 views
6

如何將一些ajax數據發佈到控制器功能並返回?因爲我想發送一個整數給函數,並獲得另一個整數(發佈ID的項目的總票數),成功後我想回顯該票數。 我不知道如何將「ID」發佈到控制器功能。請參閱我的代碼:將ajax數據發佈到PHP並返回數據

//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"; 

澄清

我想你混淆了

{data:the_id} 

success:function(data){ 

兩個data是你自己清晰起見不同,你可以修改它

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

你postng的ID,以控制器功能後的意思是,我應該只是回聲裏面的函數?我想通過'$(「span#votes_number」)。html(number);' – billa

+0

看到'$ data'將顯示您從客戶端發送的ID在'ID'的基礎上你可能會做一些處理和計算'總票數',然後'回顯'您計算出的'voteCount',並在'success'回調中接收它,然後您可以顯示'voteCount',無論您想要什麼,我都會修改答案。一看 – Rafay

+0

感謝的人。它的工作原理,但我只是想知道爲什麼它會工作,如果我回聲「yourVoteCount」;在控制器中的數字,但不會工作,如果我'返回yourVoteCount;'在這種情況下,我不會得到任何成功的數據。什麼原因?再次感謝。 – billa

3

對於JS,嘗試

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的數據庫獲取(整數)票數。在我的ajax函數中,在成功的時候,我想得到這個數字,這樣我就可以像'$(「span#votes_number」)那樣回顯。html(number);' – billa

+0

因此,使用您的示例,您從「count_votes」腳本輸出的值將被解釋爲「data」javascript變量,因此$(「span#votes_number」)。html(data); – serialworm

+0

謝謝你。林只是想知道爲什麼它的工作原理,如果我回應控制器中的$投票,但不會工作,如果我「返回」$票據? – billa