2016-12-06 3 views
1

2つの異なる場所に移動する必要があるフォームを送信しています。フォームは非表示になり、jquery .valメソッドで自動入力されます。私はどのように2つの異なる場所でこれを提出するためにajaxを書くだろうか?サーバー側の設定にアクセスできない場合はこれを行うことができますか?ここで AJAXを使用して2つの場所に動的に入力したフォームを送信

は私が

をそれを設定する必要があると思うどのように私はjQueryがここ

$(function() {  // fill form fields 
    $('#playersFullName_submit').val(playersFullName); 
    $('#p_name').append(playersFullName); 
    $('#playersEmail_submit').val(playersEmail); 
    $('#dateSubmitted').val(submitDate); 
}); 

をそれに記入されて、私はここで

<form action="x" method="post" class="form-inline"> 
     <input type="hidden" name="players_name" class="form-control" id="playersFullName_submit"> 
     <input type="hidden" name="players_email"class="form-control" id="playersEmail_submit"> 
     <input type="hidden" name="players_score" class="form-control" id="playersScore_submit"> 
     <input type="hidden" name="redirect_url" class="form-control" id="redirectURL_submit" value="x"> 
     <input id="submit endGame" type="submit" class="btn btn-default" value="Submit Your Score"> 
    </form> 

を提出していますフォームです

$.ajax({ 
      type: "POST", 
      url : "url1.com", 
      data: {}, 
      success: function(msg){ 
       // get response here 
       } 
      }); 

$.ajax({ 
      type: "POST", 
      url : "url2.com", 
      data: {}, 
      success: function(msg){ 
       // get response here 
       } 
      }); 

データに何かを入力する必要がありますか?それとも、<form>から引き出すのですか?

+2

あなたはdata' 'にものを入力する必要があります。 – Ouroborus

+0

どうすれば入力できますか?私はフォームのIDからそれをベースにしていますか? –

+0

ロード時にフォームに記入する方法と同様の方法です。変数のフォーム値を入力するのではなく、データをオブジェクトに抽出し、そのオブジェクトを 'data'パラメータとして送信します。 – Ouroborus

答えて

1

フォームデータを取得し、dataプロパティのAJAXコールに挿入する必要があります。あなたはjQueryのserialize() methodでこれを行うことができます:あなたのC

// Get your reference to the form: 
var theForm = document.getElementsByTagName("form")[0]; 

$.ajax({ 
      type: "POST", 
      url : "url1.com", 
      data: $(theForm).serialize(), // <-- Inject serialized form data 
      success: function(msg){ 
       // get response here 
       } 
      }); 

$.ajax({ 
      type: "POST", 
      url : "url2.com", 
      data: $(theForm).serialize(), // <-- Inject serialized form data 
      success: function(msg){ 
       // get response here 
       } 
      }); 
+0

'.serialize()'はそれをURLとして作成しますか?例: 'playersfullname&PlayersFullName'? –

+0

@etherその形式はURLではなく、名前と値のペアをHTTPで親しみやすく連結したものです。 POSTリクエストをしていることを示しているので、データは名前と値のペアとして移動しますが、URLには追加されません。しかし、GET要求をした場合、フォームデータは、あなたが示したようにクエリー文字列としてURLに追加されます。ただし、POSTまたはGETを選択するだけでは、サーバーはデータをそのように送信する必要があります。 –

+0

@etherデータがどのように見えるかを知りたければ、一時的な 'console.log($(theForm).serialize())'を追加するだけです。 POSTリクエストでは、この文字列はURLに追加されず、別のストリームとして送信されます。 –

0

bが/アヤックス、フォームのフォームアクション提出することを防止する必要がある、形成する代わりに、AJAXであなたのサーバー側のルートを宣言しないで提出されています。

$('#submit_btn').on('click', function(e) { 

    e.preventDefault(); // you need this so the form don't submit 

    $.ajax({ 
     type: "POST", 
     url : "url1.com", 
     data: {}, 
     success: function(msg1){ 
      var msg1; 
      } 
     }); 

    $.ajax({ 
     type: "POST", 
     url : "url2.com", 
     data: {}, 
     success: function(msg2){ 
      var msg2; 
      } 
     }); 
}); 
0
$.ajax({ 
      type: "POST", 
      url : "url1.com", 
      data: $('.form-inline').serialize(), 
      success: function(msg){ 
       // get response here 
       } 
      }); 

$.ajax({ 
      type: "POST", 
      url : "url2.com", 
      data: $('.form-inline').serialize(), 
      success: function(msg){ 
       // get response here 
       } 
      }); 
0
あなた自身が多くのURLに送信する必要が見つけなければならない場合には

...

var theForm = document.getElementsByTagName("form")[0], 
    urls = ['url1.com','url2.com', ....]; 

$.each(urls, function(index,value){ 
    $.ajax({ 
     type: "POST", 
     url : value, 
     data: $(theForm).serialize(), 
     success: function(msg){ 
      // get response here 
     } 
    }); 
}); 
関連する問題