我已经设置了AJAX呼叫。我通过警告我发送的POST值(甚至警告POST数据字符串)测试了JS文件,一切看起来都很好。然后我获取这些值并将它们放在需要它们的PHP文件中。我试图在没有任何变量的情况下尽可能简单地复制过程。它工作正常。然后我尝试运行AJAX函数,它给了我错误信息。这是我的JS代码(我之前声明了page_number和类型变量,但它不相关;我已经提醒了那些并且变量被正确分配了):
$('.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'时,它只是说'未找到'。我假设这意味着它没有成功运行查询(我不知道为什么)。
答案 0 :(得分:6)
this
没有引用被点击的元素,它包含$.ajax
- 调用的选项。
创建一个闭包以访问success-callback中的被点击元素。
$('.pagination_button').click(function(){
var that = this
$.ajax({
success:function(response){
//use here $(that) instead of $(this)
}
});
});