Я ищу сценарий jQuery AJAX вместе с PHP-скриптом, который позволяет хранить информацию на нажатие кнопки. Функция, определенная в jQuery, должна принимать три переменные, все из которых определяются методом предварительной обработки. У меня есть основа для завершения операции, но в конце всех операций - после нажатия кнопки и некоторое время прошло - данные не добавляются в соответствующую базу данных mysql.jQuery AJAX с PHP для загрузки содержимого в MYSQL DB
Вот моя JQuery функция «магазин»
<script type="text/javascript">
function store(ud, ld, tp) {
$.ajax({
url: 'http://www.exampledomain.com/folder/store.php',
type: 'POST',
data: 'ud='+ud+'&ld='+ld+'&tp='+tp
success : function() {
alert("WORKED!");
},
error : function() {
alert("DIDN'T WORK!");
},
complete : function() {
}
});
}
</script>
Вот файл store.php (очень простой, я знаю, у меня есть еще и обеспечить этот сценарий с помощью дезинфицирующего пользовательского ввода)
<?php
require ('../mysqli_connect.php');
$errors = 0;
if(isset($_POST['ud']) && is_numeric($_POST['ud'])) {
$ud = $_POST['ud'];
} else {
++$errors;
}
if(isset($_POST['ld']) && is_numeric($_POST['ld'])) {
$ld = $_POST['ld'];
} else {
++$errors;
}
if(isset($_POST['tp'])) {
$tp = strip_tags(stripslashes($_POST['tp']));
} else {
++$errors;
}
if($errors == 0) {
$q = "INSERT INTO table_name (column_1, column_2, column_3, column_4) VALUES ('$ld', '$ud', NOW(), '$tp')";
mysqli_query($mysqli, $q);
} else {
echo 'There was a problem!';
}
?>
Предположим, что у меня есть onclick = "store (3, 3, A)" как атрибут для определенного элемента. Как я могу это исправить? Если я удалю атрибут onclick, как передать необходимые параметры функции jQuery? Я ценю любую помощь!
< - EDIT ->
Новый JQuery & AJAX скрипт ...
<script type="text/javascript">
function store(ud, ld, tp) {
$.ajax({
url: 'http://www.exampledomain.com/folder/store.php',
type: 'POST',
data: 'ud='+ud+'&ld='+ld+'&tp='+tp,
error : function() {
alert("error");
},
success : function(data) {
alert(data);
},
complete : function() {
alert("complete");
}
});
}
$(function() {
$("a.rec").on("click", function() {
var $this = $(this),
ud = $this.data("ud"),
ld = $this.data("ld"),
tp = $this.data("tp");
store(ud, ld, tp);
});
});
</script>
Пересмотренный PHP
<?php
if($_SERVER['REQUEST_METHOD'] === "POST"){
require ('../mysqli_connect.php');
$errors = 0;
if(isset($_POST['ud'])) {
$ud = $_POST['ud'];
} else {
++$errors;
}
if(isset($_POST['ld'])) {
$ld = $_POST['ld'];
} else {
++$errors;
}
if(isset($_POST['tp'])) {
$tp = $_POST['tp'];
} else {
++$errors;
}
if($errors == 0) {
$q = "INSERT INTO table_name (column_1, column_2, column_3, column_4) VALUES ('$ld', '$ud', NOW(), '$tp')";
mysqli_query($mysqli, $q);
} else {
echo 'There was a problem!';
}
} else {
$url = 'http://www.exampledomain.com/error.php';
ob_end_clean();
header("Location: $url");
exit();
}
?>
Теперь для моего HTML
<li>
<div class="sample classes">
<a class="rec" data-ud="13" data-ld="10" data-tp="SCI">
<input type="submit" title="Something" value="Something" />
</a>
</div>
</li>
Однако, когда эта кнопка нажата, она все равно ничего не делает!
[Использовать подготовленный запрос] (http://php.net/manual/en/mysqli.prepare.php) –
Незначительная опечатка может быть третьим параметром вашей функции 'store'; у вас есть 'type', но используйте' tp' в запросе. Попробуйте проверить, что данные проходят, как ожидалось, просто сбрасывая данные в вашем PHP-скрипте и проверяя его. Затем убедитесь, что запрос вызывается вообще. Убедитесь, что 'mysqli_query()' не возвращает ошибку, так как у вас нет ошибок. – Demonslay335
@ Demonslay335 благодарю вас за головы! Я забыл изменить имя передаваемых переменных, поскольку я просматривал свой код, чтобы сделать его более общим (я думал, что это поможет). – CFitz