在我的HTML
中,我通过PHP
/ MySQL
个查询结果进行循环,并执行使HTML
像这样的结果作为最终结果:
loop 1
<p>- user review-</p>
<a href=#" id="upvote">Up Vote</a>
loop 2
<p>- user review-</p>
<a href=#" id="upvote">Up Vote</a>
etc.
现在,当用户点击“up vote”时,我只想让AJAX POST
发送到PHP
脚本,如下所示:
// jQuery / AJAX - separate file linked to `HTML`
$('#upvote').onclick(function() {
var user_id = ??????;
var review_id = ?????;
$.ajax({
url : "search_query.php",
type : "POST",
dataType: "json",
data : {
userId : user_id,
reviewId : review_id
},
success : function(data) {
// do stuff
}
});
// php
<?php
$review_id = $database->escape_value(trim($_POST['reviewId']));
$user_id= $database->escape_value(trim($_POST['userId']));
// Upvote Method
$result = Data::upVoteReview($review_id, $user_id);
// Not discussed in question
$output["result"] = $result;
print(json_encode($output));
?>
我的问题是:我需要从HTML
中获取两个变量并输入AJAX POST
;如上所示,它们是reviewId
和userId
。 (请注意,user_id
是登录用户,实际存储为全局PHP
SESSION
变量。)
困难的部分是HTML是动态的,每个循环都有不同的review_id。 user_id将是相同的,但我不知道如何从SESSION
var到JavaScript。注意:在HTML
页面上的每个“循环”中,我都可以访问我需要的review_id
php变量 - 只是不知道放在哪里,所以我可以在{{1}中找到它} / jQuery
。
答案 0 :(得分:3)
使用类而不是ID作为propper标记,每页应该只有一个给定名称的ID。
HTML
loop 1
<p>- user review-</p>
<a href="#" class="upvote" data-review="1">Up Vote</a>
loop 2
<p>- user review-</p>
<a href="#" class="upvote" data-review="2">Up Vote</a>
etc.
JS
// jQuery / AJAX - separate file linked to `HTML`
$('.upvote').on('click', function(e) {
e.preventDefault();
var review_id = this.data('review');
$.ajax({
url : "search_query.php",
type : "POST",
dataType: "json",
data : {
reviewId : review_id
},
success : function(data) {
// do stuff
}
});
PHP
<?php
$review_id = $database->escape_value(trim($_POST['reviewId']));
// Upvote Method
$result = Data::upVoteReview($review_id, $_SESSION['user_id']);
$output["result"] = $result;
print(json_encode($output));
?>
答案 1 :(得分:1)
您的代码中似乎存在相当多的问题,我注意到的前几个问题如下:
第一个:
loop 1
<p>- user review-</p>
<a href=#" id="upvote">Up Vote</a> <------------------------------Here
loop 2
<p>- user review-</p>
<a href=#" id="upvote">Up Vote</a> <-------------------------------Here
etc.
您错过了开场报价,即它应该是href="#"
而不是href=#"
第二是:
$('#upvote').onclick(function() {
应该是因为jQuery没有onclick
函数,它肯定有on
函数。
$('#upvote').on('click', function() {