请告诉我,有一种向数据库发送数据的表格。没有脚本,它可以正常工作,但是脚本没有任何反应。在控制台中-表单数据具有所有数据,第200条代码已到达,但未添加到数据库中。
PHP:
fgets
HTML:
<?php
$data = $_POST;
if (isset($data['add'])) {
$posts = R::dispense('posts');
$posts->head = $data['head'];
$posts->desc = $data['desc'];
R::store($posts);
}
?>
JS:
<form method="POST" id="FormID">
<input type="text" name="head" required />
<input type="text" name="desc" required />
<button type="submit" name="add">Добавить</button>
答案 0 :(得分:1)
您说:
if (isset($data['add'])) {
因此,代码仅在数据中add
时才执行任何操作。
<button type="submit" name="add">Добавить</button>
add
是一个提交按钮。提交表单时,它将包含在数据中。
data: $("#FormID").serialize(),
您没有提交表单。 jQuery serialize
不包括提交按钮,因为当您不提交表单时,它们不是成功的控件。
使用其他某种机制来确定是否有数据要处理(例如head
和desc
的存在。
答案 1 :(得分:0)
action
$data['name']
而不是R::dispense
?$.post()
?您需要的是这些
PHP代码:
<?php
$data = $_POST;
if (isset($data['add'])) {
if(isset($data['head']) AND !empty($data['head']) AND isset($data['desc']) AND !empty($data['desc'])) {
$head = htmlspecialchars($data['head']);
$desc = htmlspecialchars($data['desc']);
echo "Hello from server";
}
else {
echo "Please fill the form";
}
}
?>
HTML:
<form method="POST" id="FormID" action="path_to_php_file.php">
<input type="text" name="head" required />
<input type="text" name="desc" required />
<button type="submit" name="add">Добавить</button>
</form>
JS:
<script>
$("#FormID").submit(function(e)
{
e.preventDefault();
var form = $(this),
url = form.attr('action');
var data = {};
// To have post paramaters like
// { 'head' : 'Head value', 'desc' : 'Desc value' }
$.each(form.serializeArray(), function(i, field) {
data[field.name] = field.value;
});
$.post(url, data, function(Responses) {
// Will write "Hello from server" in your console
console.log(Responses);
});
});
</script>