通过JQuery Ajax Post Request提交表单

时间:2016-10-09 20:05:47

标签: javascript jquery ajax express form-data

我在网络Node / 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',

但是当我完全删除这条线时,一切都正常工作......如果有人能告诉我为什么这条线会破坏一切,我有兴趣知道。

2 个答案:

答案 0 :(得分:1)

这是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)));
?>

希望这会对你有所帮助。

答案 1 :(得分:0)

我检查了你的代码,它说的是

  

非法调用

所以我会给你一个可以使用的解决方案

data: $form.serialize(),
dataType: 'json',

然后你可以通过

抓住你的结果
console.log(JSON.stringify(e));

希望有所帮助。如果你有一些错误,我可以帮助你。