どのように私は、$ .postからPHPスクリプトにjavascriptオブジェクトの配列を送信することができますか?

StackOverflow https://stackoverflow.com/questions/1499137

質問

私は自分のページ上のデータのテーブルを持っています。列は、「開始」、「終了」、「コメント」、および「オプション」です。オプション列内の行を削除するボタン、テーブルの行が編集させるボタンです。これは、「コメント」、「終了」を「開始」、との値を変更することができます。もう一度それをクリックすると、編集処理を終了します。最後に、テーブルに別の行を追加する方法があります。このすべてが期待通りに動作します。

私はこのようになりますその(:必須ではありません、純粋SOに示すの容易さのためにJSONとして表される)、テーブル内のデータのうち、配列を作成下部にボタンを追加したいです

[
    {
        "start"     :"2009/08/01",
        "end"       :"2009/08/08",
        "comment"   :"an example date.",
    },
    {
        "start"     :"2009/07/01",
        "end"       :"2009/07/08",
        "comment"   :"another example date, a month earlier.",
    },
    {
        "start"     :"2000/07/01",
        "end"       :"2000/07/08",
        "comment"   :"another example date, a year earlier. You get the idea.",
    }
]

私はあまりにも多くの問題のアレイを構築する必要はありませんが、私は持っていたら、どのように私はそれが(その後、ファイルにデータを書き込むためにput_csv()を使用します)バックエンドのPHPスクリプトに投稿することができますか?理想的には、検証を可能にするために、アレイ形式でavailiableサーバー側であろう。

これは必須です場合は、

私は、jqueryのを使用してうれしいです。

役に立ちましたか?

解決

あなたはそれをサーバーに終わらどのようにarchieveたい何をすべきかに依存します。あなたがデータを処理する新しいページをロードする場合は、非表示の入力を通常のフォームを使用することができます。 CRascoが言ったように処理したい場合は別の方法として、AJAXを経由してバックグラウンドで動作している、jQuery.ajaxを使用しています。あなたが使用していずれにせよ、あなたは簡単なキー/値リストに構造化された配列を変換する必要があります。

1つのオプションは、JSONドキュメントを生成する(私はjQueryのは、このための機能を提供していないと思いますが、あなたは簡単に何かを見つけることができます)とシリアル化された文書を単一のフィールドを使用することです。そして、サーバ側にあなたが戻って配列を取得するためにjson_decodeを使用します。あなたはAJAXメソッドを使用している場合は、jQuery.ajax通話中のデータオプションが含まれます。

{
    'data': '[{"start":"2009/08/01","end":"2009/08/08","comment":"an example date."},...'
}

より良いアプローチは、PHPがネイティブに理解できる形式でのフィールドのリストにそれをシリアル化することです。それはあなたが特別な何もしないしなければならないことを意味し、$_POST['data']は配列が含まれています。たとえばます:

{
    'data[0][start]': '2009/08/01',
    'data[0][end]': '2009/08/08',
    'data[0][comment]': 'an example date.',
    'data[1][start]': '2009/07/01',
    'data[1][end]': '2009/07/08',
    'data[1][comment]': 'another example date, a month earlier.',
    ... 
}

あなたがフォームメソッドを使用している場合は、入力フィールドを生成する必要がありますように:

<input type="hidden" name="data[0][start]" value="2009/08/01" />

他のヒント

私は間違いなくjQueryのを使用します。ここでの$ .postのためのページ()関数があります。

http://docs.jquery.com/Ajax/jQuery.postする

1つの警告は、$ .post()が簡素化され、成功したポストが、何のためにコールバックを設定するためにあなたの能力を排除している$アヤックス()関数のラッパーであるということです。 AJAXを介した重要な取引については、私はこれを使用することになります:

http://docs.jquery.com/Ajax/jQuery.ajaxする

である例:

$.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: ({id : this.getAttribute('id')}),
      dataType: "html",
      success: function(msg){
         alert(msg);
      }
   });
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top