通过 JQuery Ajax Post 请求提交表单
Submitting Form via JQuery Ajax Post Request
我在网络节点/Express 网络应用程序上有一个基本的消息服务,我正在尝试使用 FormData 对象通过 Ajax 提交表单。
如果我在没有 AJAX 的情况下提交表单,那么一切正常,但是 AJAX 和 req.body。都是未定义的。
在服务器上,使用AJAX时,我需要在req.body以外的地方查找数据??
正在创建 FormData 对象:
var ajaxData = new FormData;
ajaxData.append('newMessage', $('.new-message').val()) // I've console.logged these, and their values are correct
ajaxData.append('senderId', $('[name="senderId"]').val())
ajaxData.append('senderName', $('[name="senderName"]').val())// I've console.logged these, and their values are correct
ajaxData.append('recipientId', $('[name="recipientId"]').val())
ajaxData.append('recipientName', $('[name="recipientName"]').val())// I've console.logged these, and their values are correct
这是 POST 请求:
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
data: ajaxData,
dataType: false,
cache: false,
contentType: false,
processData: false,
complete: function() {
console.log('message created');
},
success: function(data) {
},
error: function(xhr, textStatus, errorThrown) {
console.log(xhr.statusText);
console.log(textStatus);
console.log(errorThrown);
}
});
编辑
感谢 G. Mansour 在下方的回答。万一其他人到达这里,问题是行:
contentType: false,
我在某些时候试过这条线,它也不起作用
contentType: 'application/json',
但是当我完全删除这条线时,一切都正常工作...如果有人能告诉我为什么这条线会破坏一切,我很想知道。
我检查了你的代码,上面写着
Illegal invocation
所以我会给出一个你可以使用的解决方案
data: $form.serialize(),
dataType: 'json',
然后你可以通过
获取你返回的结果
console.log(JSON.stringify(e));
希望对您有所帮助。如果您有一些错误,我可以帮助您。
这是html部分
<form id="form" action="" method="post">
<input type="text" name="msgID" id="msgID">
<input type="text" name="senderId" id="senderId">
<input type="text" name="senderName" id="senderName">
<input type="text" name="recipientId" id="recipientId">
<input type="text" name="recipientName" id="recipientName">
<input type="submit" name="dsq" value="dsqdsq">
</form>
这是JavaScript部分
<script type="text/javascript">
$(document).ready(function(){
$("#form").submit(function(){
$.ajax({
url: "test.php",
data: $("#form").serialize(),
type: "POST",
dataType: 'json',
success: function (e) {
console.log(JSON.stringify(e));
},
error:function(e){
console.log(JSON.stringify(e));
}
});
return false;
});
});
</script>
这是 php 代码
<?php
die(json_encode(array("status"=>true)));
?>
希望对你有所帮助。
我在网络节点/Express 网络应用程序上有一个基本的消息服务,我正在尝试使用 FormData 对象通过 Ajax 提交表单。
如果我在没有 AJAX 的情况下提交表单,那么一切正常,但是 AJAX 和 req.body。都是未定义的。
在服务器上,使用AJAX时,我需要在req.body以外的地方查找数据??
正在创建 FormData 对象:
var ajaxData = new FormData;
ajaxData.append('newMessage', $('.new-message').val()) // I've console.logged these, and their values are correct
ajaxData.append('senderId', $('[name="senderId"]').val())
ajaxData.append('senderName', $('[name="senderName"]').val())// I've console.logged these, and their values are correct
ajaxData.append('recipientId', $('[name="recipientId"]').val())
ajaxData.append('recipientName', $('[name="recipientName"]').val())// I've console.logged these, and their values are correct
这是 POST 请求:
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
data: ajaxData,
dataType: false,
cache: false,
contentType: false,
processData: false,
complete: function() {
console.log('message created');
},
success: function(data) {
},
error: function(xhr, textStatus, errorThrown) {
console.log(xhr.statusText);
console.log(textStatus);
console.log(errorThrown);
}
});
编辑
感谢 G. Mansour 在下方的回答。万一其他人到达这里,问题是行:
contentType: false,
我在某些时候试过这条线,它也不起作用
contentType: 'application/json',
但是当我完全删除这条线时,一切都正常工作...如果有人能告诉我为什么这条线会破坏一切,我很想知道。
我检查了你的代码,上面写着
Illegal invocation
所以我会给出一个你可以使用的解决方案
data: $form.serialize(),
dataType: 'json',
然后你可以通过
获取你返回的结果console.log(JSON.stringify(e));
希望对您有所帮助。如果您有一些错误,我可以帮助您。
这是html部分
<form id="form" action="" method="post">
<input type="text" name="msgID" id="msgID">
<input type="text" name="senderId" id="senderId">
<input type="text" name="senderName" id="senderName">
<input type="text" name="recipientId" id="recipientId">
<input type="text" name="recipientName" id="recipientName">
<input type="submit" name="dsq" value="dsqdsq">
</form>
这是JavaScript部分
<script type="text/javascript">
$(document).ready(function(){
$("#form").submit(function(){
$.ajax({
url: "test.php",
data: $("#form").serialize(),
type: "POST",
dataType: 'json',
success: function (e) {
console.log(JSON.stringify(e));
},
error:function(e){
console.log(JSON.stringify(e));
}
});
return false;
});
});
</script>
这是 php 代码
<?php
die(json_encode(array("status"=>true)));
?>
希望对你有所帮助。