1

在我的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.

现在,当用户点击“赞成票”时,我只想将 AJAXPOST发送到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));
?>

我的问题是:我需要从HTMLAJAX 中获取两个变量并放入POST;如您在上面看到的,它们是reviewIduserId。(注意user_id是登录用户,实际上存储为全局PHP SESSION变量。)

困难的部分是 HTML 是动态的,每个循环都会有不同的 review_id。user_id 将是相同的,但我不确定如何将其从SESSIONvar 获取到 JavaScript。注意:在HTML页面上的每个“循环”中,我确实可以访问review_id我需要的 php 变量 - 只是不确定将它放在哪里,所以我可以在jQuery/中获取它AJAX

4

2 回答 2

3

使用类而不是 ID 作为适当的标记,每页应该只有 1 个给定名称的 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));
?>
于 2013-07-28T23:47:13.077 回答
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() {
于 2013-07-28T23:47:54.497 回答