AJAX

2016-10-01 1 views
1

でフォームアクションのためのパラメータを追加するにはどうすればアヤックスAJAX

echo " 

<form action='upload_Comment.php?post_id=$post_id' method='post' id='comments'> 

<textarea class='form-control' name='comment' rows='1'></textarea> 

<input type='submit' name='post_comment'> 
</form> 


    "; 

せずに正常に動作し、次の形式を持っている。しかし、私はフォームが送信されたときにリロードからページを防ぐために、AJAXを使用する必要があります。

$(document).ready(function(){ 
    $('#comments').on('submit', function(e) { 
    e.preventDefault(); 

    $.ajax({ 
     url: "upload_comment.php?post_id= + post_id ", 
     type: "POST", 
     data: new FormData(this), 
     dataType : 'json', 
     contentType: false, 
     processData: false, 
     success : function(data){     
           console.log(data); 

         }, 
         error: function(){alert('Error!')} 
    }) 

    }); 
}); 

私は新しいポストを提出し、そのpost_idのは、各ポストに固有のたびに$ post_idのパラメータ値を渡す方法が必要です。誰かが私を助けることができますか?私はどのように私はpost_idパラメータをajax形式のURLに渡すことができますか?

+0

になりますアクションのクエリ文字列 – adeneo

+0

私は隠れたフィールドに$ post_id値を渡そうとしましたが、ポストサブミット以外のデータベースから最初の投稿IDだけを取得します – chris

+0

セッション変数を試してみてください。フォームvarをフォームに表示する前に、セッション変数に投稿IDを設定し、ハンドラで直接取得することで、クエリ文字列を使用せずにupload_comment.phpを呼び出すことができます。 – nocturns2

答えて

0

GETはGET情報を使っていたので、それを渡すことはできません。 あなたのコードはおそらく次のようになります。また

var fData = new FormData(this); 
fData.append('post_id', post_id); 

を、これを読んで:HTTP POST with URL query parameters -- good idea or not?

"upload_comment.php?post_id= + post_id " 

は次のようになります。(真剣に、これをしない):

"upload_comment.php?post_id=" + post_id 
0

は隠しフェイルドを取り、ポストIDの値assifnそれに

<textarea class='form-control' name='comment' rows='1'></textarea> 
<input type="hidden" value="<?=$post_id;?>" id="postId"> 
<input type='submit' name='post_comment'> 
</form> 

と、それはサーバーサイド変数の場合はjsのコードが隠された入力にそれを置く代わりに、

$(document).ready(function(){ 
$('#comments').on('submit', function(e) { 
e.preventDefault(); 
var post_id =$('#postId').val(); 
$.ajax({ 
    url: "upload_comment.php?post_id=" + post_id, 
    type: "POST", 
    data: new FormData(this), 
    dataType : 'json', 
    contentType: false, 
    processData: false, 
    success : function(data){     
          console.log(data); 

        }, 
        error: function(){alert('Error!')} 
}) 

}); 
}); 
+0

私はこれを試しましたが、$ post_idの隠し値は常に1としてピックアップされ、各フォーム送信の投稿IDはループ内にあるように異なります – chris

+0

それは私の間違いのURLでした: "upload_comment.php?post_id =" + post_id urlの代わりに: "upload_comment.php?post_id = + post_id" –