AJAX сохраняет только первую букву ввода - PullRequest
0 голосов
/ 01 мая 2018

У меня есть запрос AJAX, который сериализует данные формы и отправляет их в базу данных. Когда данные сериализуются, я вижу, что они выводят полный текст inout, но когда он сохраняет их в базе данных, он сохраняет только первую букву каждого слова?

Например, он будет сериализовать это для отправки:

splashText = Серебряная глазурь

но база данных будет сохранена, если нет строки:

S

если в представленной таблице несколько строк, данные регистрируются в базе данных следующим образом:

строка 1 будет = S строка 2 будет = я

Где, как я пытаюсь получить это следующим образом:

строка 1 будет = Серебряная глазурь строка 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 Post:

 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 голосов
/ 02 мая 2018

Поскольку вы не предоставляете html-код, я предполагаю, что кнопка «Просмотреть предложение» является кнопкой отправки. Итак, попробуйте это:

изменить с

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; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...