0

フォーラムを検索しましたが、マルチアレイの投稿に関する具体的な例は見つかりませんでした。これが私の問題です:

私は、パートナーと一緒に作成しているアプリケーションのフロント エンド プログラミングを行っています。彼はすでにすべてのバックエンド作業を行っていますが、PHP と HTML で動作するフロントエンドのプロトタイプも作成しました (1991 年頃のスタイルでテーブルを配置に使用する... 読むのは絶対に悪夢です)。

html/css/Jquery を使用して、すべてをゼロから再コーディングしています。動的なフォームを作成するための jquery が特に好きです。ユースケースでは、顧客は特定の請求書に関連するプロバイダーに新しいチケット (インシデント) を発行しています。請求書には数十の項目が含まれる場合があるため、顧客は 1 つまたは複数の項目を指定することもできます。私のコードでは、これらすべてをマルチ配列にキャプチャしてから、処理のために PHP ページに POST します。

私の問題は、好きなデータ構造でJSコードからPHPにデータをPOSTする正しい方法を見つけられないように見えることです。

コードに:

フォームページ


ユーザーが入力する各項目にはいくつかのフィールドがあります。それぞれをフィールドセットにラップします。

$('.add_product').click(function(){
                    index++;
                    $(this).parent().parent().append("<fieldset>" +
                    "<label for='name'>Name</label><input type='text' alt='name' value='' id='" + this + "_name" + index + "'/>" +
                     "<label for='code'>Code</label><input type='text' alt='code' value='' id='" + this + "_code" + index + "'/>" +
                     "<label for='lotnumber'>Lot</label><input type='text' alt='lotnumber' value='' id='" + this + "_lotnumber" + index + "'/>" +
                     "<label for='expiration'>Expiration</label><input type='text' alt='expiration' value='' id='" + this + "_expiration" + index + "'/>" +
                     "<p class='remove_product'>Remove</p></fieldset>");

フォームが送信されると、次のようにすべてのフィールドセットを複数配列に選択します。

 var postValues={};
 var i=0;
                $('fieldset').each(function(){

                    postValues[i]={"VarChar08":"","VarChar07": $(this).parent().parent().attr('id'),"VarChar14":"P" , "VarChar09": $(this).find('input[alt="name"]').val(), "VarChar10": $(this).find('input[alt="code"]').val(), "VarChar11": $(this).find('input[alt="lotnumber"]').val(), "VarChar12": $(this).find('input[alt="expiration"]').val(),"VarChar13":"","VarChar20":"1"} ;
                    i++;

                });

私の最後の試みは、配列を JSON 文字列化することでした。

var itemValues= JSON.stringify(postValues);

次に、それらを php プロセッサ ページに投稿します。

 $.post("some.php", {items: itemValues}); 

PHP プロセッサ ページ


$itemValues=json_decode($_POST['items']);
$items = $itemValues;

// read into POST values for submitting to a stored procedure
foreach ($items AS $m => $tmp_items){
        $_POST['VarChar09'] = $items[$m][3]; // name
        $_POST['VarChar10'] = $items[$m][4]; // code
        $_POST['VarChar11'] = $items[$m][5]; // lot
        $_POST['VarChar12'] = $items[$m][6]; // expiry
}

残念ながら、これは機能していません。PHP プロセッサ ページがデータ構造を正しく読み取っていないため、値が正しく割り当てられません。経験の限界に達したのではないかと心配しています。JavaScript側からのデータ構造の理解に欠陥がある可能性があると思います。私は、配列のオブジェクト、オブジェクトのオブジェクト、オブジェクトの配列、または配列の配列を持つという全体的なアイデアをまだ理解できていません。繰り返しますが、これはそれと関係がある場合とない場合があります。

どんな助けでも大歓迎です!

4

1 に答える 1

1

あなたのinput要素にはいくつかの問題があります。最初thisは、html 文字列に連結しようとしている DOM 要素です。

input要素にはname、フィールドが送信してキーを作成するために必要な要素がありません$_POST

要素のname属性を使用serialize()すると、データ オブジェクトを自分でハードコーディングするのではなく、すべてのフォーム データを生成するために使用できます。

var data=$('#formID').serialize();

 $.post("some.php", data, function(response){
     /* ajax success... do something with response if needed*/
 }); 

API リファレンス: http://api.jquery.com/serialize/

これで、php$_POSTキーはフィールドの名前と一致します

于 2013-01-06T22:52:10.327 に答える