使用ajax将变量从javascript传递到php

时间:2016-06-26 10:19:22

标签: javascript php jquery ajax

我试图将变量从js传递给PHP但没有成功。我已经阅读了所有类似的问题,但我没有运气。 $ id持续获得“52”的值,这意味着我没有收到我的帖子请求......

$(document).on("click", ".info-button", function () {

    var myBookId = $(this).data('id');
    $(".modal-body .modal-text").text(myBookId);

    var variableToSend = myBookId;

    $.ajax({
        type: "POST",
        url: "jsTophp.php",
        data:{ id : variableToSend }, 
        success: function(data){
            console.log(data); 
        }
    })
});

我的jsTophp.php文件:

<?php
if(isset($_POST['id'])){
    $id = $_POST['id'];
} else {
    $id = 52;
}
?>

这是我在movies.php文件中的html

include 'jsTophp.php';

<div class="modal-body">
            <div class="row">
                <p class="modal-text"></p>
                <?php 
                    $movie = mysqli_query($con, "SELECT * FROM movies WHERE id=$id");

                    $row = mysqli_fetch_array($movie);

                    echo '  
                    <div class="col-md-4">
                        <div class="info-image">
                        <img class="img-responsive" src="'.$row['cover_path'].'" style="width:150px;height:200px;"> 
                    </div>
                    </div>   

                    <div class="col-md-4">
                        <h4>Title: '.$row['title'].'</h4>
                        <h4>Director: '.$row['director'].'</h4>
                        <h4>Year: '.$row['d'].'</h4>
                        <h4>Description: '.$row['description'].'</h4>
                        <a href=""><img class="imdb-img" src="images/IMDb-Icon.png" style="width:80px;height:80px;"></a>
                        <a href=""><img class="imdb-img" src="images/youtube_logo.png" style="width:60px;height:40px;"></a>
                    </div>
                '; ?>
            </div>
        </div>

2 个答案:

答案 0 :(得分:0)

由于您的代码基本上是正确的,您确认您的请求成功,问题可能更多是一个误解:

您的ajax使用jsTophp.php调用POST request,但此文件似乎对您的$id执行任何操作。

您希望在$id中设置此movies.php,因为您将文件包含在顶部。只是因为您可能之前调用jsTophp.php并不意味着此脚本的执行结果是持久的,因此您可以在movies.php中访问它。您只需要包含源代码,这意味着movies.php看起来像这样:

<?php
if(isset($_POST['id'])){
    $id = $_POST['id'];
} else {
    $id = 52;
}
?>

<div class="modal-body">
    <div class="row">
        <p class="modal-text"></p>
...

您反而想做的是,在您的ajax调用中调用此脚本:

$.ajax({
    type: "POST",
    url: "movies.php",
    data:{ id : variableToSend }, 
    success: function(data){
        console.log(data); 
    }
})

我知道,我的结论有很多假设,但你的问题,代码和评论都会得出这个结论。希望它是问题,它会帮助你。

答案 1 :(得分:0)

看看我的代码,它可以执行您想要的相同操作,并且按预期工作。

HTML

<a onclick="addToCart(this, 1)" href="#!">Click me</a><br>

JS

function addToCart(elem, pid){
var pid = pid;

$.ajax({
    type: "POST",
    url: "cart_add_product_ajax.php",
    dataType: 'json',
    data: {
            pid:     pid
          },
    success: function(res) {
        if(res == 1){
            location.reload();
        }else{
            //
        }
    }
});
}

PHP

    if($_POST){
        $pid     = $_POST['pid'];

        if(mysqli_query($con, "SELECT * FROM movies WHERE id=".$pid)) {
            echo 1; //success
        }else{
            echo 0; //failure
        }
    }

另外要检查PHP代码中发生了什么(e.x.如果有任何错误),请使用chrome inspector&gt;网络(标签)。单击您从服务器获得的响应。例如,您可以键入PHP

var_dump($_POST['id'])

查看它在检查器中返回的内容。

希望它有所帮助。