我有这个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();
}
知道为什么会这样吗?
答案 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内部服务器错误”