簡體   English   中英

從HTML / PHP頁面獲取AJAX Post的正確變量

[英]Grabbing correct variables for AJAX Post - from HTML/PHP page

在我的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 ; 如上所示,它們是reviewIduserId (注意user_id是登錄用戶,實際上存儲為全局PHP SESSION變量。)

困難的部分是HTML是動態的,每個循環都有不同的review_id。 user_id將是相同的,但我不知道如何從SESSION var到JavaScript。 注意:在HTML頁面的每個“循環”中,我都可以訪問我需要的review_id php變量 - 只是不確定將它放在哪里,所以我可以在jQuery / AJAX

使用類而不是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));
?>

您的代碼中似乎存在相當多的問題,我注意到的前幾個問題如下:

第一個:

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() {

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM