1

私のでは、 /クエリHTMLの結果をループして、最終結果として次のようなことを行います。PHPMySQLHTML

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 から 2 つの変数を取得して配置する必要がありますPOST。上記のように、それらはreviewIduserIdです。user_id(はログインしているユーザーであり、実際にはグローバルPHP SESSION変数として格納されていることに注意してください。)

難しいのは、HTML が動的であり、ループごとに異なる review_id を持つことです。user_id は同じになりますが、それをSESSIONvar から JavaScript に取得する方法がわかりません。注: ページの各「ループ」では、必要な php 変数HTMLにアクセスできますreview_id。配置場所がわからないため、jQuery/で取得できAJAXます。

4

2 に答える 2

3

ID の代わりにクラスを適切なマークアップとして使用し、ページごとに特定の名前の ID を 1 つだけにする必要があります。

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

あなたのコードにはかなりの問題があるようです。私が最初に気付いた問題は次のとおりです。

最初の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=#"

2番目は:

$('#upvote').onclick(function() {

おそらくjQueryには機能がないため、onclick機能は間違いなくあるはずonです。

$('#upvote').on('click', function() {
于 2013-07-28T23:47:54.497 に答える