Я пытаюсь использовать jQuery-AJAX для отправки данных в моей форме на мой контроллер (index.php), где они обрабатываются PHP и вставляются через PDO в базу данных, если они действительны. После того, как код вставлен в базу данных, div, в котором ранее существовала форма, должен быть заменен содержимым другой страницы (newpage.php). Исходная страница не должна обновляться при отправке формы, должна обновляться только div, в которой ранее существовала форма. В моем коде есть особая проблема, хотя я не могу найти, где проблема:
Вот мой JQuery:
<script type="text/javascript">
function processForm() {
var action= $('#action').val();
var data = $('#data').val();
var dataString = 'action=' + action + '&data=' + data;
$.ajax ({
type: "POST",
url: ".",
data: dataString,
success: function(){
$('#content_main').load('newpage.php');
}
});
}
</script>
Вот мой HTML: (В качестве примечания я заметил, что когда я беру «return false;» из HTML, форма будет отправлена в мою базу данных, но вся страница также перезагрузится - и будет пустой Когда я оставляю «return false;» в HTML, newpage.php корректно загружается в div, но данные не попадают в базу данных)
<form action="" method="post" onsubmit="processForm();return false;">
<input type="hidden" name="action" value="action1" />
<input type="text" name="data" id="data" />
<input type="submit" value="CONTINUE TO STEP 2" name="submit" />
</form>
Вот мой PHP:
<?php
$action = $_POST['action'];
switch ($action) {
case 'action1':
$data = $_POST['data'];
pdo ($data);
exit;
}
?>
Мне кажется, что я где-то совершаю глупую ошибку, но просто не могу понять, как это сделать. Спасибо за любую помощь, вы можете предоставить!
РЕШЕНИЕ (через Джен):
JQuery:
<script type="text/javascript">
function processForm() {
var dataString = $("#yourForm").serialize();
$.ajax ({
type: 'POST',
url: ".",
data: dataString,
success: function(){
$('#content_main').load('newpage.php');
}
});
return false;
});
</script>
HTML:
<form id="yourForm">
<input type="hidden" name="action" value="action1" />
<input type="text" id="data" name="data" />
<input type="submit" value="CONTINUE TO STEP 2" name="submit" />
</form>
PHP:
<?php
$action = $_POST['action'];
switch ($action) {
case 'action1':
$data = $_POST['data'];
pdo ($data);
exit;
}
?>
Что я выучил: используйте метод .serialize () jQuery, если это опция, так как это сэкономит кучу времени, записывая var
для каждого значения формы, а .serialize () обычно не делает ошибок при отправке информация по тел.