我试图将数据从表单发送到数据库。这是我使用的形式:
<form name="foo" action="form.php" method="POST" id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
典型的方法是提交表单,但这会导致浏览器重定向。使用jQuery和Ajax,是否有可能捕获所有表单的数据并将其提交给PHP脚本(例如,form. PHP)?
自从引入了Fetch API,就没有理由再用jQuery Ajax或xmlhttprequest来实现了。要POST表单数据到php脚本在香草JavaScript你可以做以下:
异步函数postData() {
尝试{
Const res = await fetch('../php/contact.php', {
方法:“文章”,
new FormData(document.getElementById('form'))
})
if (!res.ok)抛出新的错误('网络响应不正常');
} catch (err) {
console.log (err)
}
}
<form id="form" action="javascript:postData()" >
<input id="name" name="name" placeholder=" name" type="text" required>
<input type="submit" value=" submit" >
> < /形式
下面是一个非常基本的php脚本示例,它获取数据并发送电子邮件:
<?php
header('Content-type: text/html; charset=utf-8');
if (isset($_POST['name'])) {
$name = $_POST['name'];
}
$to = "test@example.com";
$subject = "New name submitted";
$body = "You received the following name: $name";
mail($to, $subject, $body);
自从引入了Fetch API,就没有理由再用jQuery Ajax或xmlhttprequest来实现了。要POST表单数据到php脚本在香草JavaScript你可以做以下:
异步函数postData() {
尝试{
Const res = await fetch('../php/contact.php', {
方法:“文章”,
new FormData(document.getElementById('form'))
})
if (!res.ok)抛出新的错误('网络响应不正常');
} catch (err) {
console.log (err)
}
}
<form id="form" action="javascript:postData()" >
<input id="name" name="name" placeholder=" name" type="text" required>
<input type="submit" value=" submit" >
> < /形式
下面是一个非常基本的php脚本示例,它获取数据并发送电子邮件:
<?php
header('Content-type: text/html; charset=utf-8');
if (isset($_POST['name'])) {
$name = $_POST['name'];
}
$to = "test@example.com";
$subject = "New name submitted";
$body = "You received the following name: $name";
mail($to, $subject, $body);
我使用这个简单的一行代码多年没有问题(它需要jQuery):
<script src="http://malsup.github.com/jquery.form.js"></script>
<script type="text/javascript">
function ap(x,y) {$("#" + y).load(x);};
function af(x,y) {$("#" + x ).ajaxSubmit({target: '#' + y});return false;};
</script>
这里ap()表示Ajax页面,af()表示Ajax表单。在表单中,只需调用af()函数即可将表单发送到URL,并在所需的HTML元素上加载响应。
<form id="form_id">
...
<input type="button" onclick="af('form_id','load_response_id')"/>
</form>
<div id="load_response_id">this is where response will be loaded</div>
我使用如下所示的方法。它像文件一样提交所有东西。
$(document).on("submit", "form", function(event)
{
event.preventDefault();
var url = $(this).attr("action");
$.ajax({
url: url,
type: 'POST',
dataType: "JSON",
data: new FormData(this),
processData: false,
contentType: false,
success: function (data, status)
{
},
error: function (xhr, desc, err)
{
console.log("error");
}
});
});