У меня есть таблица, которую я могу динамически добавлять и удалять любое количество строк. Как только данные будут введены пользователем, я использую функцию jQuery AJAX для отправки POST в базу данных mysql, поэтому нет перенаправления или обновления страницы.
Единственный способ, которым я мог подумать о том, чтобы заставить его работать, – использовать этот цикл for в моем jQuery, эффективно размещая каждую строку в базе данных отдельно. Как это глупо? Должен ли я получать все данные таблицы и размещать ее один раз? Там может быть любое количество строк, изменяющихся на пользователя, и пользователь может добавлять и удалять строки столько, сколько он хочет перед отправкой.
Странный подсчет переменной i происходит из-за того, что в верхней части таблицы находятся две строки. Я не мог выработать разумный способ сделать это.
Я был немного параноик относительно данных, всегда связанных с правильной строкой.
Спасибо за ваше время.
jQuery(function() { jQuery(".button1").click(function() { // process form here var rowCount = jQuery('#dataTable tr').length; for (var i = 2; i < rowCount; i++){ // the four elements of each row I am storing to the mysql var txtRow1 = jQuery('#txtRow' + (i-1)).val(); var tickerRow1 = jQuery('#tickerRow' + (i-1)).val(); var quantRow1 = jQuery('#quantRow' + (i-1)).val(); var valueRow1 = jQuery('#valueRow' + (i-1)).val(); var dataString = 'txtRow1='+ txtRow1 + '&tickerRow1=' + tickerRow1 + '&quantRow1=' + quantRow1 + '&valueRow1=' + valueRow1; //alert (dataString);return false; jQuery.ajax({ type: "POST", url: "http://rccl.co.uk/form_action1.php", data: dataString }); }; return false; }); });
Это выглядит очень четко для меня, как если бы у вас был хорошо установленный индекс этой строки, используя вашу переменную i . Большинство обработчиков форм на стороне сервера будут распаковывать повторяющиеся ключи формы в список, для таких вещей, как много флажков с тем же именем. Вы можете использовать это здесь.
datastring = ''; for(var i=2; i<rowCount; i++) { var txtRow1 = jQuery('#txtRow' + (i-1)).val(); var tickerRow1 = jQuery('#tickerRow' + (i-1)).val(); var quantRow1 = jQuery('#quantRow' + (i-1)).val(); var valueRow1 = jQuery('#valueRow' + (i-1)).val(); dataString = datastring + 'index[]=' + (i-1) + 'txtRow1[]='+ txtRow1 + '&tickerRow1[]=' + tickerRow1 + '&quantRow1[]=' + quantRow1 + '&valueRow1[]=' + valueRow1; }
Затем сделайте вызов ajax всей цепочкой.
На стороне сервера вы должны получить массивы для каждого из них, первый из которых соответствует первой строке, второй из которых соответствует второй строке и т. Д.
Прошло много времени с тех пор, как я использовал PHP, но я считаю, что символы []
для каждого ключевого элемента необходимы, чтобы определить PHP $_POST
что он должен преобразовать содержимое различных ключей в массивы.
Я попробую отправить все сразу.
Причины