【问题标题】:AJAX Call is not working even though the PHP and JS files work on their own即使 PHP 和 JS 文件单独工作,AJAX 调用也不起作用
【发布时间】:2013-08-19 15:52:06
【问题描述】:

我已经设置了 AJAX 调用。我已经通过提醒我正在发送的 POST 值(甚至提醒 POST 数据字符串)来测试 JS 文件,并且一切看起来都很好。然后,我将这些值放入 PHP 文件中需要它们的地方。我试图在没有任何变量的情况下尽可能简单地复制该过程。它工作正常。然后我尝试运行 AJAX 函数,它给了我错误消息。这是我的 JS 代码(我之前声明了 page_number 和 type 变量,但它不相关;我已经提醒了这些变量并且变量被正确分配):

$('.pagination_button').click(function(){

    //MAKE AJAX CALL TO REPOPULATE TABLE
    var myData = 'page_number='+ page_number + '&type='+ type;

            $.ajax({
                type: 'POST', // HTTP method POST or GET
                url: 'archive_ajax.php', //Where to make Ajax calls
                dataType:'text', // Data type, HTML, json etc.
                data:myData, //post variables
                success:function(response){

                //REFORMAT UPON SUCCESSFUL AJAX CALL
                $(this).parent().find('span.page_counter').text(next_page);
                $(this).closest('.archive_table').append(response);*/


                },
                error:function (xhr, ajaxOptions, thrownError){
                    alert('didn\'t work'); //throw any errors
                }
            }); 
});

这是服务器端代码。我已经使用变量自行运行此页面,它正确显示了所有内容:

<?php
include('../includes/connect.php');

$page_number = mysqli_real_escape_string($_POST['page_number']);
$type = mysqli_real_escape_string($_POST['type']);

$start_number = $page_number*10;

if($type=="pagination_1"){
$type = "archive_1";
}
else if($type=="pagination_2"){
$type = "archive_2";
}
else if($type=="pagination_3"){
$type = "archive_3";
}

$sql = "SELECT * FROM ".$type." ORDER BY timestamp ASC LIMIT ".$start_number.", 10";
$result = $mysqli->query($sql);

while($row = mysqli_fetch_array($result)){
$converted = date('m/d/y', strtotime($row['timestamp']));
echo "<tr class='table_data' style='float:left;'>
<td>".$converted."</td>
</tr>";
}

?>

在将信息实际发送到服务器时,我似乎无法找到所有故障的地方。任何帮助将不胜感激。谢谢!

编辑

我得到的(对于那些询问的人)是它正在从错误函数中警告“不起作用”。当我提醒“thrownError”时,它只会显示“未找到”。我假设这意味着它没有成功运行查询(我不确定为什么)。

【问题讨论】:

  • 您遇到的错误是什么
  • 您的代码 sn-p 对我来说似乎很好。如果要跟踪数据传输,可以使用 Firebug 的 net 小工具。
  • "它给了我错误信息"
  • 另外请注意,攻击者完全能够使用您当前的代码从任何表中选择所有行,这是一个安全问题,即使它不太可能产生很多有用的结果。
  • Changing input style with AJAX 的可能重复项

标签: php javascript jquery mysql ajax


【解决方案1】:

success-callback 里面的this 没有引用被点击的元素,它包含了$.ajax-call 的选项。

创建一个闭包以访问成功回调中的单击元素。

$('.pagination_button').click(function(){
  var that = this
  $.ajax({
           success:function(response){
                   //use here $(that) instead of $(this)
                   }
        }); 
});

【讨论】:

  • 这是有道理的。我也刚刚更新了这个问题。这个阶段的问题不一定是样式和jQuery代码,似乎我遇到了错误并且PHP页面上的AJAX调用/查询由于某种原因没有成功运行?
  • 这实际上回答了我的问题。对于另一个问题,我想出了别的办法。这项工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 2021-08-29
  • 2021-07-05
  • 1970-01-01
相关资源
最近更新 更多