2016-10-09 18 views
0

Web Node/Express Webアプリケーションに基本的なメッセージングサービスがあり、FormDataオブジェクトを使用してフォームをAjax経由で送信しようとしています。JQuery経由でフォームを送信する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リクエストです:下記の彼の答えのためのG.マンスールへ

$.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); 
    } 
}); 

EDIT

感謝を。私は完全に行を削除するときに私はすべてのもの、また

contentType: 'application/json', 

に動作しない、いくつかの点で、この行を試みたが、

contentType: false, 

:場合は誰がここを取得、問題はラインでしたいつものように働いています...誰かが私にこのラインがすべてを壊していた理由を教えてもらえれば、私は知りたいと思うでしょう。

+0

ファイルが含まれていますか?フォームをシリアライズして作成したカスタム設定を取り除くのがそれほど単純ではない場合 – charlietfl

+0

コメントありがとう@charlietflいいえ、関連するファイルはありません。私はちょうどG. Mansourが以下に示唆したようにフォームをシリアライズすることに行きましたが、予期せぬトークンが0の位置にある 'parseerror'を取得します。 –

+0

ブラウザのdevツールネットワークの実際の要求を調べることができます返されるものそれは有効ではありませんjson – charlietfl

答えて

1

これはこれは、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))); 
?> 

である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> 

ある意志はあなたを助けますことを願っています。

+0

はい!それがチケットです。ありがとう、私はこれを何時間もしてきました。参考のために、問題を引き起こしていたのは 'contentType:false 'でした。私はOPを完全な説明で編集します... –

0

私はそれはそれはので、私はあなたが

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

を使用することができます。そして、あなたが

console.log(JSON.stringify(e)); 
して返される結果をキャッチすることができます解決をあげる

Illegal invocation

だと言うあなたのコードをチェックします

お寄せください。あなたが何かエラーがあるなら、私はあなたを助けることができます。

+0

ありがとう@G。マンソル!私はちょうどあなたが示唆したようにしてみましたが、位置0に予期せぬ文字があると言うparseerrorがあります。私は最初にFormData($ form)を設定しようとしたことを忘れていました。同じ結果。 –

+0

エラー関数を に変更できますか?function(error){ console.log(JSON.stringify(error)); } –

+0

エラー処理を変更しましたが、エラーは発生していません。私はMongoDBで空のメッセージ文書を作成しています。 –

関連する問題