У меня возникла проблема, которую я пытался исследовать и исправлять в течение нескольких часов, и я нахожусь в своем уму, не понимая, почему она работает неправильно.Параметры jQuery .post не отправляются
У меня есть диалоговое окно jQuery (через jQuery UI), когда кто-то хочет удалить элемент (нажав на изображение значка удаления и вызвав функцию JS с предоставленным «id» целым числом). Всплывающее диалоговое окно работает правильно и содержит всю доступную информацию и параметры кнопок. Вот код, который:
function removeItem(id) {
var rid = id;
$("#dialog").dialog({
title: "Removal Confirmation",
resizable: false,
height: 200,
modal: true,
show: {
effect: "blind",
duration: 800
},
buttons: {
"Confirm": function() {
$.post("includes/inc_details.php", {
"type":"remove",
"id":rid
});
window.location.reload();
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
}
});
}
Когда «Confirm» кнопку в диалоговом окне будет нажата, это предположим .post к PHP-файл для дальнейшей обработки (код для этой части ниже), и когда полная воля перезагрузите окно браузера и закройте диалоговое окно.
Однако, что обычно происходит, страница выглядит просто перезагруженной, а затем диалог закрывается, но элемент не удаляется. Я смотрю обработку с помощью инструментов chromeDev, и кажется, что при вызове php-файла .post оба параметра не отправляются вместе с ним. (Я использовал аналогичные .posts другие места - хотя и без диалогового окна JQuery UI - без проблем).
ПОМОЩЬ!
PHP код вызывается с помощью метода .POST:
$sql = "select * from shopping_cart WHERE id=$_POST[id] LIMIT 1";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
if ($row["Type"] == "CouponUsed") {
$sql_delete_free_item = "delete from shopping_cart where ProductID=".$_SESSION["freeProductId"]." and SessionID='".session_id()."'";
$query = mysql_query($sql_delete_free_item);
unset($_SESSION["freeProductId"]);
}
$sql_id = "SELECT ProductID FROM shopping_cart WHERE id=$_POST[id] LIMIT 1";
$result_id = mysql_query($sql_id);
$row_id = mysql_fetch_assoc($result_id);
$sql_remove = "DELETE FROM shopping_cart WHERE id=$_POST[id] LIMIT 1";
if (mysql_query($sql_remove)) {
$sql_remove2 = "DELETE FROM shopping_cart_single WHERE singleid=$_POST[id]";
mysql_query($sql_remove2);
}
mysql_close($conn);
exit();
Спасибо заранее!
** Опасность **: Вы используете [** устарели * * API базы данных] (http://stackoverflow.com/q/12859942/19068) и должен использовать [современную замену] (http://php.net/manual/en/mysqlinfo.api.choosing.php). Вы уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, что современный API упростит [защиту] (http://stackoverflow.com/questions/60174/ наилучшим образом-чтобы-предотвратить-sql-injection-in-php). – Quentin