2

JQueryを使用してajaxを介してjson形式で投稿フォームデータを動的に送信する方法を迷っていますか?たとえば、私はJQで次のようなコーディングをしています。

$.post("test.php", { func: "getNameAndTime" },
    function(data){
      alert(data.name); // John
      console.log(data.time); //  2pm
    }, "json");

それは良いことですが、ライブアプリでは多くの場合、巨大なフォームデータを送信する必要があり、ユーザーはフィールドを動的に変更できるため、送信されるfunc1、func2、func3、さらにはfunc[]の数がわかりません。qは、これを動的に行う方法です。AJAXの古い世界では、フォームをシリアル化してサーバーに送信することでこれを行うことができました。よろしくお願いします。

4

2 に答える 2

5

はい、すべてのデータをサーバーに送信できますが、どのような場合でもうまく機能します。例:

$(function() { // on document load
$('#email_form').submit(function() { // set onsubmit event to the form
  var data = $('#email_form').serialize(); // serialize all the data in the form 
  $.ajax({
    url: 'testJson.php', // php script to retern json encoded string
    data: data,  // serialized data to send on server
    dataType:'json', // set recieving type - JSON in case of a question
    type:'POST', // set sending HTTP Request type
    async:false, 
    success: function(data) { // callback method for further manipulations             
      for (key in data.email) {
        alert(data.email[key]);
      }

    },
    error: function(data) { // if error occured

    }
  });
  return false;
});

});

于 2012-07-14T15:53:07.960 に答える
3

AJAXリクエストの動的データを構築することは可能ですが、その動的データを取得するためのロジックを理解する必要があることは明らかです。.user_input質問ではこれを説明していないので、以下の例では、フォームのフィールド数(2、10など)に基づいていると想定しています。データは、フィールド名+フィールド値で構成されます。

重要なのは、データの動的な収集を示すことです。それだけです。

var ajax_data = {};
$('.user_input').each(function() {
    ajax_data[$(this).attr('name')] = $(this).val();
});
$.post('some/url.php', ajax_ata); //etc
于 2012-07-14T10:56:49.577 に答える