jQuery .get()函数返回错误

时间:2013-08-10 19:23:44

标签: php jquery ajax

我有这个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();
}

知道为什么会这样吗?

2 个答案:

答案 0 :(得分: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;
});

有关具体情况的详细信息,请查看有关$.Deferred的jQuery文档:http://api.jquery.com/category/deferred-object/

答案 1 :(得分:-1)

此:

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

我认为应该是:

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

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