Ajaxデータをコントローラー関数にポストして、それを取り戻すにはどうすればよいですか?ある整数を関数に投稿し、別の整数(IDが投稿されたアイテムの総投票数)を取得し、成功した場合はその投票数をエコーしたいためです。 「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.
}
});
$.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);
JSについては、
data: {id: the_id}
...
success: function(data) {
alert('the server returned ' + data;
}
そして
$the_id = intval($_POST['id']);
pHPで
では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呼び出しで「データ」に返されるものです。