【问题标题】:How to pass two variables in Ajax using PHP PDO如何使用 PHP PDO 在 Ajax 中传递两个变量
【发布时间】:2017-05-24 06:26:58
【问题描述】:

索引.php <ul id="remove_row">
<button type="button" name="btn_more" data-vid="<?php echo $pro_id; ?>" id="btn_more" class="btn btn-success form-control">more</button> </ul>

加载数据.php

sleep(1);
require_once("config.php");  
$query = $connect->prepare("SELECT * FROM county WHERE sof_similar > ".$_POST['last_video_id']." LIMIT 2");  
$query->execute();
while ($row_posts = $query->fetch(PDO::FETCH_ASSOC))
{ 
$pro_id = $row_posts['sof_id'];
$pro_similar = $row_posts['sof_similar'];
echo " <li>
<div class='alter'>
<h1><hr /><img src='$pro_fimagelink' alt=''> <a href='$pro_downloadpage'><strong>$pro_name</strong></a> &nbsp;<a rel='nofollow' href='?q=$pro_name' target='_self'><small></small></a> <br />
<span>$pro_shortdescription<br />
<div class='license'>$pro_license</div>


<li id="remove_row">  
<button type="button" name="btn_more" data-vid=". $pro_similar ." id="btn_more" class="btn btn-success form-control">more</button>
</li>
";

Ajax 脚本:

<script>  
$(document).ready(function(){  
$(document).on('click', '#btn_more', function(){  
var last_video_id = $(this).data("vid");  
$('#btn_more').html("Loading...");  
$.ajax({  
url:"/load_data.php",  
method:"POST",  
data:{last_video_id:last_video_id},
dataType:"text",  
success:function(data)  
{  
if(data != '')  
{  
$('#remove_row').remove();  
$('#load_data_table').append(data);  
}  
else  
{  
$('#btn_more').html("No Data");  
}  
}  
});  
});  
});

使用此代码,我可以传递单个变量来获取结果,但我需要 2 个变量来使用 AJAX 来获取结果。我有这个博客的基本代码:http://www.webslesson.info/2016/02/how-to-load-more-data-using-ajax-jquery.html

感谢 webslesson.info 提供这次学习 AJAX 的机会。

【问题讨论】:

  • 做一些这样的事情。 数据:{ last_video_id:last_video_id , nextVar:nextVar },

标签: php ajax pdo


【解决方案1】:

您可以在ajax() 数据中传递任意数量的变量,例如:

data:{
  key1: value1,
  key2: value2,
  key3: value3,
  and so on
},

【讨论】:

    【解决方案2】:

    这样做:

    data:{last_video_id:last_video_id,your_second_variable:your_second_variable},
    

    【讨论】:

      【解决方案3】:

      方式一:

      dataType : "json",
      contentType: "application/json; charset=utf-8",  
      data:{
             key1: value1,
             key2: value2,
             key3: value3,
             ..........
      },
      

      方式2:可以像

      这样通过串联设置数据
      data: 'value1='+val1+'&value2='+val2,
      

      【讨论】:

        【解决方案4】:

        让我们逐个文件查看。

        在文件load.php 中,您似乎在使用 PDO,但是错误的方式。 PDO 允许您安全地转义传递给查询的变量,以避免sql injections。 h记住你应该重构你当前的查询:

        $query = $connect->prepare("SELECT * FROM county WHERE sof_similar > ".$_POST['last_video_id']." LIMIT 2");
        

        $query = $connect->prepare("SELECT * FROM county WHERE sof_similar > LIMIT 2");   
        $stmt->bind_param('ii', intval($_POST['last_video_id']));
        

        official documentation 中查看有关 PDO 准备语句的更多信息。

        为了从 ajax 请求中传递更多变量,您只需在 Ajax script 文件中的当前 Json Object 中添加更多键/值对:

        $.ajax({
            url:"/load_data.php",
            method:"POST",
            data:{ last_video_id:last_video_id, key : value }, // Our new key/value  pair here
            dataType:"text",
            success:function(data)
            {
                if(data != '')
                {
                    $('#remove_row').remove();
                    $('#load_data_table').append(data);
                }
                else
                {
                    $('#btn_more').html("No Data");
                }
            }
        });
        

        稍后我们可以通过从 $_POST 全局变量中读取来访问 load_data.php 中的此类数据,就像使用 `last_video_id` 所做的那样。

        【讨论】:

        • 谢谢...那么,我如何在 PHP 中分配 2 个变量来获得 Ajax 结果,因为我是 PHP 和 AJAX 的新手...仍在学习阶段...
        • 谢谢,我差不多完成了。但是,我仍然在 load_data.php 中遇到错误。如何从 $_post 全局变量中获取 2 个变量值。 $sql = "SELECT * FROM tbl_video WHERE video_id > ".$_POST['last_video_id']." AND video_cat = ".$_POST['last_soft_id']." LIMIT 2"; $result = mysqli_query($connect, $sql); if(mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_array($result)) {
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多