1

我有一堆输入文本框,我想将它们放入一个数组(id 和 value)中并通过 ajax 传递。将其传递给我的 php 代码后,我需要遍历它并将 id 和 value 保存在数据库中。(每个 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));


    });

您可以将对象的字符串化传递给 php,然后使用 JSON 库进行解析。检查 http://jsfiddle.net/wmrqk/

希望能帮助到你!

于 2013-02-25T17:11:16.547 回答
-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 回答
-1

从您的代码中,我了解到您只是将查询存储在变量中而不是执行它。您需要在每次循环迭代中执行 SQL 查询。如果你使用 mysql,你可以这样做:

mysql_query($query);

但请确保您首先初始化了数据库连接。

于 2013-02-25T17:05:59.810 回答