【问题标题】:reloading page with new function AJAX使用新功能 AJAX 重新加载页面
【发布时间】:2016-02-18 14:37:13
【问题描述】:

我有一个显示最新图像的页面。
我正在使用 AJAX 请求对这些图像进行排序:

$('#trier').on('click', function() {        // When i click on button to validate Sort out
var b = document.getElementById('genre').value;  // parameter Sort out : genre 
$.post('index.php', {y: b}, function(data) {
location.reload(); // reload page with pictures sorted out
});
});

这就是我对图像进行分类的功能:

if(isset($_POST['y'])){              // if they is a sorting out request
function latest($n) {
$genre= $_POST['y'];
$dbCon = mysqli_connect("localhost", "artlibr1_default", "azerty123", "artlibr1_01");
$sql = "SELECT * FROM general WHERE genre='$genre' ORDER BY date_added DESC LIMIT $n, 1";
$query = mysqli_query($dbCon, $sql);
while ($list = mysqli_fetch_assoc($query)) {
 return $list['path'];
}
}}else{                             // default display 
function latest($n) {
$genre= $_POST['y'];
$dbCon = mysqli_connect("localhost", "artlibr1_default", "azerty123", "artlibr1_01");
$sql = "SELECT * FROM general ORDER BY date_added DESC LIMIT $n, 1";
$query = mysqli_query($dbCon, $sql);
while ($list = mysqli_fetch_assoc($query)) {
 return $list['path'];
}
}

(只有sql语句改变)
所以问题是我需要用$_POST['y'] 数据重新加载页面;但目前该页面正在重新加载并且没有$_POST['y'] 数据。

【问题讨论】:

  • 您使用 ajax 获取内容,然后使用 location.reload() 重新加载页面,丢失了您刚刚获取的内容?
  • @adeneo 我正在使用 ajax 发送数据,但是想重新加载页面并考虑到这些新数据;但是 ajax 不能那样工作:/

标签: javascript php ajax


【解决方案1】:

您的代码:

  1. 从 JavaScript 发出 HTTP 请求
  2. 使用 PHP 从数据库中获取一些数据
  3. 将该数据从 PHP 发送到 JavaScript
  4. JavaScript 忽略该数据并重新加载页面(使用原始 GET 请求)

如果你想重新加载页面。 不要使用 Ajax。 Ajax 的重点是您无需重新加载页面即可发出 HTTP 请求。

如果你想使用你取回的数据,那么不要使用location.reload,取data的值并对其进行处理。

【讨论】:

  • okey 有道理,谢谢!但我可以使用 AJAX 隐藏所有与排序参数不对应的元素?
【解决方案2】:

嗯,你没有正确使用 ajax。 也许你应该编辑你的代码

$('#trier').on('click', function() {        // When i click on button to validate Sort out
    var b = document.getElementById('genre').value;  // parameter Sort out : genre 
    $.post('index.php', {y: b}, function(data) {
        $('#div-need-load-image').html(data) // reload page with pictures sorted out
    });
});

或者如果你想将图像附加到 div,你可以尝试.append() 而不是.html()

$('#div-need-load-image').append(data)

【讨论】:

  • .html() 看起来像解决方案!我应该想到这一点,但我的 javascript 知识很差:S!谢谢
【解决方案3】:

您可以清除#genre 的内容并将其替换为从您的ajax 函数返回的数据,而不是重新加载整个页面。

【讨论】:

  • #genre 只是一个选择表单
【解决方案4】:

而不是使用

location.reload();

你应该使用

location.href = %Construct the URL you want to reload%

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多