AJAX只保存输入的第一个字母

时间:2018-05-01 10:53:08

标签: javascript php jquery ajax forms

我有一个AJAX请求,它将表单数据序列化并将其发送到数据库。当序列化数据时,我看到它将全部文本呈现出来,但是当它将它存储在数据库中时,它只保存每个单词的第一个字母?

例如,它将序列化要发送的内容:

  

splashText = Silver Glaze

但如果没有行,数据库将保存:

  

取值

如果提交的表中有多行,则数据库中的数据将被捕获,如下所示:

  

第1行将= S.   第2行将= i

我试图按照以下方式获取它:

  

第1行= Silver Glaze   第2行将=在行中选择下一个选项,依此类推......

POSTed的序列化数据如下(有2行):

job_ref=3123&job_desciption=321&sil_cost=1&sil_cost_price=2.00&sub_total=119.75&item_name%5B%5D=1&item_quantity%5B%5D=1&item_unit%5B%5D=1&item_glass%5B%5D=110&item_splash%5B%5D=20&item_colour%5B%5D=-&item_HQuan%5B%5D=1&item_HDiam%5B%5D=2.25&item_CQuan%5B%5D=1&item_Total%5B%5D=56.25&item_cil_row%5B%5D=0.000001&item_name%5B%5D=1&item_quantity%5B%5D=1&item_unit%5B%5D=1&item_glass%5B%5D=110&item_splash%5B%5D=20&item_colour%5B%5D=-&item_HQuan%5B%5D=1&item_HDiam%5B%5D=7.5&item_CQuan%5B%5D=1&item_Total%5B%5D=61.50&item_cil_row%5B%5D=0.000001&glassText=6mm Toughened Extra Clear6mm Toughened Extra Clear&splashText=Rainbow SparkleRainbow Sparkle&holeText=22mm27mm

序列化表单的代码:

  var form_data = $(this).serialize() + '&glassText=' + $('.item_glass').children("option").filter(":selected").text() + '&splashText=' + $('.item_splash').children("option").filter(":selected").text() + '&holeText=' + $('.item_HDiam').children("option").filter(":selected").text();

+用于获取输入的文本值而不是值。我想这可能是问题,但我不确定如何解决它?

PHP帖子:

 for($count = 0; $count < count($_POST["item_name"]); $count++)
 {
  $query = "INSERT INTO tbl_order_items
  (order_id, item_name, item_quantity, item_unit,item_glass, item_splash, item_HQuan,item_HDiam,item_CQuan,item_colour,item_total,user_id)
  VALUES (:order_id, :item_name, :item_quantity, :item_unit,:item_glass,:item_splash,:item_HQuan,:item_HDiam,:item_CQuan,:item_colour,:item_total,:user_id)";
  $statement = $connect->prepare($query);
  $statement->execute(
   array(
    ':order_id'   => $order_id,
    ':item_name'  => $_POST["item_name"][$count],
    ':item_quantity' => $_POST["item_quantity"][$count],
    ':item_unit'  => $_POST["item_unit"][$count],
    ':item_glass'  => $_POST["glassText"][$count],
    ':item_splash'  => $_POST["splashText"][$count],
    ':item_HQuan'  => $_POST["item_HQuan"][$count],
    ':item_HDiam'  => $_POST["holeText"][$count],
    ':item_CQuan'  => $_POST["item_CQuan"][$count],
    ':item_colour'  => $_POST["item_colour"][$count],
    ':item_total'  => $_POST["item_Total"][$count],
    ':user_id'   => $user_id
   )
  );
 }
 $result = $statement->fetchAll();
 if(isset($result))
 {
  echo 'ok';
 }
}

这是一个保存的动态表。这就是计数。

在这里将上下文放在动态表上是一个截图:

Dynamic table

1 个答案:

答案 0 :(得分:1)

因为您没有提供HTML代码,所以我假设“#Review Review && 39;按钮是提交按钮。所以,试试这个:

改变
var form_data = $(this).serialize() + '&glassText=' + $('.item_glass').children("option").filter(":selected").text() + '&splashText=' + $('.item_splash').children("option").filter(":selected").text() + '&holeText=' + $('.item_HDiam').children("option").filter(":selected").text()

要:

var glassText = '';
$('.item_glass').each(function(){
    glassText+='&glassText[]='+$(this).find(":selected").text().replace(' ','+');
});

var splashText = '';
$('.item_splash').each(function(){
    splashText+='&splashText[]='+$(this).find(":selected").text().replace(' ','+');
});

var holeText = '';
$('.item_HDiam').each(function(){
    holeText+='&holeText[]='+$(this).find(":selected").text().replace(' ','+');
});

var form_data = $(this).serialize() + glassText + splashText + holeText;