0

より大きなシングルページアプリケーションの一部である次の機能があります。

gatherData function(){
    var superarray = []
    var row = 0


    $('ul li').each(function(){
        var task = $(this).find('.edited').html();   
        var time = $(this).find('.time').html(); 
        var array = []
        var count = 0

        array[count] = task;
        count = count + 1  
        array[count] = time;

        superarray[row] = array  
        row = row + 1                       
      }); // end each

       console.log(superarray); // this is the data i want tabulated in email 
  });

使いたいです

 <form><email><submit class="send"></form>

 $('.send').click(function(){
        gatherData();
        $.post("processform.php", // now I'm stuck

php / ajax / json /の最も適切な組み合わせでメールを送信するには、次の形式のメッセージを生成します

「データ収集の結果は

task1 time1

task2 time2

taskN taskN

ロールクレジットなど」

私の知らないうちに、投稿する前に、非表示のメッセージフィールドを作成し、DOMを介してこれにデータを追加することを考えました。しかし、もっとエレガントな方法があるに違いないと思いました。

誰かがこれに関するベストプラクティス(または作業コード!:)を提案し、この場合にどのテクノロジー/テクニックが最も適切であるかを正しい方向に向けることができますか?ありがとうございました

http://jsfiddle.net/BinaryGeometry/kNwMA/

4

2 に答える 2

0

あなたは次のように言うでしょう:

 $('.send').click(function(){
    var data = gatherData();
    $.post("processform.php?data="+ data) .....

そして、あなたのphpスクリプトには、echo $_POST['data'].

于 2012-12-06T01:37:30.107 に答える
0

@happilyUnStuck、少し良いアプローチは、次のことを行うことです。

クリックイベントで、フォームを送信する準備ができていることを確認するようユーザーに促します。戻り値に基づいて、投稿を続行します

あなたの投稿で:

a.) 元の $.post を元の状態に戻します b.) フォーム内のデータを json としてシリアル化します ... .serialize() を .serializeArray() に置き換えます c.) $ への呼び出しで関数を失います。 post ... 成功または失敗を報告したい場合以外は必要ありません

サーバー側では、json ライブラリを使用して投稿データを逆シリアル化し、必要に応じて使用します。このタイプのアプリケーション/ユースケースは、まさに json が意図したものです...

于 2012-12-06T03:09:33.383 に答える