0

我有这个 jQuery 代码:

$("#delete_products").click(function() {
    $(":checkbox:checked").each(function() {
        var pid = $(this).val();
        $.get('delete_product.php',{pid: pid});
});
location.reload();
});

由于某种原因,该$.get()功能不起作用。当我运行时.fail(),它确实告诉我它失败了。

这是我的 delete_product.php 页面:

if(isset($_GET['pid']) && !empty($_GET['pid']) && is_numeric($_GET['pid'])){
    $pid = $_GET['pid'];
    $query = "DELETE FROM `products` WHERE `id` = $pid LIMIT 1";
    $query_run = mysql_query($query) or die(mysql_error());
    $query = "DELETE FROM `products2categories` WHERE `product_id` = $pid";
    $query_run = mysql_query($query) or die(mysql_error());
    $pictodelete = ("../products_images/$pid.jpg");
    if(file_exists($pictodelete)){
        unlink($pictodelete);   
    }
    header("location: index.php");
    exit();
}

知道为什么会这样吗?

4

2 回答 2

0

它不起作用,因为您在location.reload请求完成之前调用。如果请求尚未返回,这将取消请求。如果您希望页面在之后重新加载,请尝试以下操作:

$("#delete_products").click(function () {
    var promises = [];
    $(":checkbox:checked").each(function () {
        var pid = $(this).val();
        promises.push($.get('delete_product.php', {
            pid: pid
        }));
    });
    $.when.apply($, promises).done(function () {
        location.reload();
    });
    return false;
});

有关到底发生了什么的更多信息,请查看有关以下内容的 jQuery 文档$.Deferred: http: //api.jquery.com/category/deferred-object/

于 2013-08-10T19:37:03.140 回答
-1

这个:

   $query = "DELETE FROM `products` WHERE `id` = $pid LIMIT 1";

我认为应该是:

   $query = "DELETE FROM products WHERE `id` = $pid LIMIT 1";

将 `` char 仅用于字段名而不用于表名。我使用萤火虫,在这种情况下总是得到“500 内部服务器错误”

于 2013-08-10T19:36:49.300 回答