1

配列 (id と値) に入れて ajax を通過させたい入力テキスト ボックスがたくさんあります。それが私のphpコードに渡された後、それをループして、IDと値をデータベースに保存する必要があります。(ID ごとに 1 行)

$("input").each(function() {
    values[$(this).attr("id")] = $(this).val();
});

これを使用して値を取得し、配列を作成します。{"1":"new","2":"edit","3":"save","4":"delete"}

次にこれをajaxに渡しますが、これらの値をループして保存するにはどうすればよいですか?

$taal = $mysqli->real_escape_string($_POST['taal']);
$arr = $_POST['values'];
foreach ($arr as $key => $value) {
    $query = "INSERT INTO words (taal_id, number, word) VALUES ('" . $taal . "','" . $key . "','" . $value . "')";
    $result = $mysqli->query($query) OR die(mysql_error());
}

それは私が使用しようとしたものですが、機能しません

ajaxリクエスト

$.ajax( {
    url: "javascript/ajax/taal.php?wat=saveWoorden",
    type: "POST",
    data: {values : values, taal : $('#talen').val()}
}).success(function() {
    $('.talenInfo').html('success');
})
4

5 に答える 5

0

個々の挿入ステートメントを送信する代わりに、準備された挿入ステートメントを送信するか、一括挿入のためにデータベース側で処理できる XML データを投稿することをお勧めします。

このようにxmlまたは一括挿入ステートメントを準備できます

var query = 'INSERT INTO words (taal_id, word)   ';
$("input").each(function () {
    query += 'Select  ' + $(this).attr("id") + ',' + $(this).val() + '  UNION ALL  ';
});

alert(query);
于 2013-02-25T17:09:22.790 に答える
0

よくわかりません...問題を完全に再現できますが、そうしようとしました

<?php
unset($_POST['data'][0]);
print_r($_POST);
?>

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript></script>

<script type='text/javascript'>

  $(document).ready(function()
  {
     $('#submit').click(function(){
     var values = [];


      $("input").each(function() {
      values[$(this).attr("id")] = $(this).val();
      });     

     $.ajax({
     url      : 'try.php',
     data     : {data:values},
     type     : 'POST',
     success  :function(data){alert(success)}
    });
   });}); 
         </script>
               <html>
               <body>
                <form method='post'>
               <input id='1' value='text1'  type='text'/>
              <input id='2' value='text2' type='text'/>
              <input type='button' id='submit' value='submit'/>
             </form>
              </body>
               </html>

私が見つけたのは、値配列のインデックス 0 が空の値を取得しているため、それを設定解除する必要があることです。データベースの制約に違反する可能性があるため、同じ問題が発生していないことを確認してください。

デバッグのヒント: クエリを出力して、どのような値が発生しているかを確認し、phpmyadmin で直接クエリを実行してみてください。何がエラーなのかわかるかもしれません。

firebug コンソールをチェックして、投稿されている値を取得できます。

于 2013-02-28T06:29:25.460 に答える
-1

HTML:

<input type="text" name="" id="one">
<input type="text" name="" id="two">
<input type="text" name="" id="three">
<input type="submit" value="Submit" id="submit">

JS

var values = {};
$('#submit').click(function(){
$("input").each(function() {
    values[$(this).attr("id")] = $(this).val();

});
    console.log(JSON.stringify(values));


    });

オブジェクトのstringifyをphpに渡してから、JSONライブラリを使用して解析できます。http://jsfiddle.net/wmrqk/を確認 してください

それが役に立てば幸い!

于 2013-02-25T17:11:16.547 に答える
-1

あなたのコードから、クエリを変数に格納しているだけで、実行していないことがわかります。ループの反復ごとに SQL クエリを実行する必要があります。mysql を使用している場合は、次のように実行できます。

mysql_query($query);

ただし、最初に DB 接続が初期化されていることを確認してください。

于 2013-02-25T17:05:59.810 に答える
-1

すべての入力の値と ID を取得して配列に入れ、文字列化します

var values = {};
$("input").each(function() {
    values[$(this).attr("id")] = $(this).val();
});
values = JSON.stringify(values);

PHP では、json_decode と foreach ループを使用します

$arr = json_decode($_POST['values']);
$result = $mysqli->query("delete from woorden where taal_id = " . $taal);
foreach ($arr as $key => $value) {
    $query = "INSERT INTO woorden (taal_id, nummer, woord) VALUES ('" . $taal . "','" . $key . "','" . $value . "')";
    $result = $mysqli->query($query) OR die(mysql_error());
}
于 2013-02-25T18:46:10.913 に答える