![](/img/trans.png)
[英]jQuery.ajax() with window.onbeforeunload not sending data
[英]Why jQuery.ajax() is not sending any data?
請告訴我,有一個表格可以將數據發送到數據庫。 沒有腳本它工作正常,但腳本沒有任何反應。 在控制台中——Form Data 有所有數據,第 200 個代碼到達,但沒有添加到數據庫中。
PHP:
<?php
$data = $_POST;
if (isset($data['add'])) {
$posts = R::dispense('posts');
$posts->head = $data['head'];
$posts->desc = $data['desc'];
R::store($posts);
}
?>
HTML:
<form method="POST" id="FormID">
<input type="text" name="head" required />
<input type="text" name="desc" required />
<button type="submit" name="add">Добавить</button>
JS:
<script>
$("#FormID").submit(function(e)
{
var form = $(this);
var url = form.attr('action');
e.preventDefault();
$.ajax({
type: "POST",
url: url,
data: $("#FormID").serialize(),
success: function(data)
{
c = "hello";
$('#FormStatus').text(c);
}
});
});
</script>
你說:
if (isset($data['add'])) {
所以代碼只有在add
數據時才會做任何事情。
<button type="submit" name="add">Добавить</button>
add
是一個提交按鈕。 當您提交表單時,它將包含在數據中。
data: $("#FormID").serialize(),
您沒有提交表單。 jQuery serialize
不包括提交按鈕,因為當您不提交表單時,它們不是成功的控件。
使用其他一些機制來確定是否有數據要處理(例如head
和desc
的存在。
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.