2016-12-14 30 views
1

私はAJAX関数を持っているので、特定のクラスのすべての要素を検索し、その値をとり、適切な形式でAJAXに追加したいと考えています。それは可能ですか?AJAXに複数の入力値を入力するにはどうすればよいですか?

私はこのAJAX機能があります。

function sendOrders(button) { 
    $.ajax({ 
     url: "external_file.php", 
     method: "POST", 
     data: { 
      /*Here I need to add the data*/ 
      GameID: "'.$_SESSION['GameID'].'", 
      Round: "'.$round.'", 
      UserID: "'.$_SESSION['UserID'].'", 
     } 
    }).done(function(msg) { 
     $("#DEBUG").html(msg); 
    }); 
}; 

を、私は、クラス=「オーダー」でページに隠されたタイプの入力からデータを収集する必要があります。

jQueryを使ってクラスごとに各要素にアクセスすることができますが、既に書かれているときに、AJAXにプロパティを追加する方法はわかりません。これらの要素の数は可変で、反復IDはありません。クラスは同じです。入力は次のようになります。

<input class="order" type="hidden" name="some_name" id="some_id" value="some_value"> 

誰でも手助けできますか?

+1

あなたはあなたのAJAXに追加する入力値の数を知りませんか? –

+2

これはちょっと夢中で、これらの隠し要素を 'form'に追加し、' name'属性をあなたのデータに必要なキーと同じに設定することができます。次に、投稿するときに、 'data(JSONを使用していないかのように見えるので)' $(form).serializeArray()を使用してください。これは、HTMLフォームが作成されたものです。 –

+0

私はそれらを 'form'に入れて、' data:$( "#my-form")。serialize() 'を直列化することに同意します。最も簡単なソリューション。 –

答えて

0

私が理解しているように、あなたはクラスの順序で入力から得るいくつかの異なる値を使ってそのajax呼び出しを行いたいですか?

あなただけのこれらのフィールドから値を追加したいと仮定すると、あなたは非常に単純な何かを行うことができます:

まず、追加の入力変数を使用してAjaxの機能、そして、

function sendOrders(button, val) { 
$.ajax({ 
    url: "external_file.php", 
    method: "POST", 
    data: { 
     value : val, 
     GameID: "'.$_SESSION['GameID'].'", 
     Round: "'.$round.'", 
     UserID: "'.$_SESSION['UserID'].'", 
    } 
}).done(function(msg) { 
    $("#DEBUG").html(msg); 
}); 
}; 

を更新し、取得しますあなたのすべての '注文'クラスの入力からのデータは、Jqueryの 'each'関数を使用することができます。あなたはそれらの入力のそれぞれから値をしたい場合たとえば、あなたはそれぞれの機能に新しいsendOrder機能を使用することができます:あなたは、AJAX機能で「ボタン」を使用しているか

$('.order').each(function(){ 
    sendOrder(buttonId, $(this).val()) 
}); 

かなりわからないが、私それが保存ボタンまたは送信ボタンに関連付けられていると仮定します。したがって、buttonIdは、そのボタンのIDと同じです。これは、クラスの順序ですべての入力を繰り返し、それらの値でajax呼び出しを行います。

あなたはおそらくAjaxの機能からすべて一緒にそれを取る、そしてこのようなものを持つことができ提出するようボタンを使用している場合:すべての入力オーバー

function sendOrders(val) { 
$.ajax({ 
    url: "external_file.php", 
    method: "POST", 
    data: { 
     value : val, 
     GameID: "'.$_SESSION['GameID'].'", 
     Round: "'.$round.'", 
     UserID: "'.$_SESSION['UserID'].'", 
    } 
}).done(function(msg) { 
    $("#DEBUG").html(msg); 
}); 
}; 
$('#buttonId').click(function(){ 
    $('.order').each(function(){ 
     sendOrder(buttonId, $(this).val()) 
    }); 
}); 
+0

正しく理解すれば、AJAXコールごとに入力値を個別に送信したいと考えています。それが本当であれば、external_file.phpを編集する必要があります。 私は上記のコメントのヒントを使用すると思いますが、とにかく感謝しています。 –

0

は、データオブジェクトを作成し、ループ、オブジェクトに値を追加します。

function sendOrders(button) { 
    var data = { 
     GameID: "'.$_SESSION['GameID'].'", 
     Round: "'.$round.'", 
     UserID: "'.$_SESSION['UserID'].'", 
    }; 
    $(button).closest("form").find("input[type=hidden]").each(function() { 
     data[this.name] = this.value; 
    }); 
    $.ajax({ 
     url: "external_file.php", 
     method: "POST", 
     data: data 
    }).done(function(msg) { 
     $("#DEBUG").html(msg); 
    }); 
}; 
関連する問題