2

ユーザーがプラス記号をクリックして、電話入力フィールド、電子メールフィールド、住所フィールドを無数に追加できる連絡先データベースのフォームがあります。私はすでに答えられた他の質問からこれを行う方法を見つけました。

次に、そのデータを処理する方法を知る必要があります。無限に追加できる各フィールドは同じ名前です。これらは、forまたは.eachを使用してループできる配列に追加されると考えていました。

最後に、この情報をjQueryAjaxを介してすべてのデータを処理するPHPページに送信していました。私はjQueryよりもPHPの方がはるかに熟練していますが、jQueryは、明らかにページを更新する必要がない場合に役立ちます。私の質問は、これは悪い習慣ですか?少し遅いようです。jsでデータをエラーチェックして処理し、処理したデータをPHPページに送信してデータベースに入力できることはわかっていますが、jsでエラーチェックを行うのがどれほど難しいかが心配です。

4

4 に答える 4

4

フォーム要素を追加するとき、名前の末尾に角括弧を追加すると、投稿されたデータは配列のようなオブジェクトとして構造化されることに注意してください。

<input type="text" name="extrainput[]"/>

その後、結果を繰り返し処理し、ユーザー入力を処理できます。

たとえば、ユーザーが自分の言語を入力するためのテキスト ボックスの数を不特定にする必要がある場合は、次のようにします。

$('#addbutton').click(function(){
    $('#myform').append('<input type="text" name="languages[]"/>')
});

ここaddbuttonで、ユーザーが別の入力を追加するためにクリックするボタンの ID です。

これらのフォーム要素を反復するには、次を使用できます。

$('[name="languages[]"]').each(...)
于 2012-11-24T21:00:56.780 に答える
3

それにアプローチする2つの方法、どちらもPHPで同様の結果をもたらします

行 1

<input type="text" name="fullname[]" />
<input type="text" name="telephone[]" />

行 2

<input type="text" name="fullname[]" />
<input type="text" name="telephone[]" />

$_POST は値の配列を持ち、そのインデックスはそれらが属する行を示します

行 1

<input type="text" name="row[1][fullname]" />
<input type="text" name="row[1][telephone]" />

行 2

<input type="text" name="row[2][fullname]" />
<input type="text" name="row[2][telephone]" />

$_POST には行ごとに配列があります

于 2012-11-24T21:00:06.763 に答える
0

jQuery(yourDiv).data('mydata', anyObject); 単に使用してから繰り返すことができます

jQuery(selector of your divs).each(function(item){
    var obj = jQuery(item).data('mydata');
    // do anything you want here
})
于 2012-11-24T20:59:46.090 に答える
0

配列を html の名前として使用できます。

var i = 0;
$('.add').click(function(){
   var newE = $('<input/>').attr({type:'text',name:'data[]',value:i,'class':'inputs'});
   $('.myform').append(newE).hide().fadeIn('1000');
});

ajax で送信する場合:

var data = {};
$.each($('.inputs'),function(i,val){
      data[i] = $(val).val();
});
callajaxfunction(data);  

そして、この配列を php で取得できます:

foreach($_POST['data'] as $key => $value){
   echo $key.':'.$value.'<br>';
}
于 2012-11-24T21:15:46.267 に答える