Я пытаюсь представить форму, в которой пользователи добавили поля через jquery, проблемы представляют собой обычный способ пропускать эти поля, определенные пользователем. Я использую функцию submit вместо jquery, но получаю ошибки. Я сделал что-то неправильно ниже?
$(document).ready(function () {
$('#form').on('submit', function(e) {
//prevent the default submithandling
e.preventDefault();
//alert(1);
//send the data of \'this\' (the matched form) to yourURL
$('processme.php', $(this).serialize()).submit;
});
});
Я попробовал, чтобы он публиковал функцию раньше, но поскольку он фактически не переходит на страницу на столбе, это вызвало ошибку сервера 500, это сработало бы, но это обусловило синтаксическую ошибку для сериализованных данных в консоли firebug.
Спасибо за вашу помощь
РЕДАКТИРОВАТЬ:
Это точная ошибка "Ошибка: ошибка синтаксиса, нераспознанное выражение: details1 = & userval = 2/jquery-1.9.1.js Строка 4421 выдает новую ошибку (" Синтаксическая ошибка, нераспознанное выражение: "+ msg);
Вот код, используемый для добавления новых полей ввода:
function addRow(){
$('#tbl1').find('tbody:last').after('<tr><td>User Defined</td><td><input name="userdef[]" value="" type="text"></td>/td></tr>');
}
PS Processme.php имеет встроенный форвардер, который зависит от ответа проверки. Поэтому сообщение должно быть отправлено в processme.php.
Код PHP:
print_r($_POST);
print_r($_POST("userdef")); echo "<br/>";
foreach ($_POST("userdef") as $key=>$val) {
echo $key." - ".$val.", ";
}
exit()
Вывод:
Array ( [userdef] => Array ( [1] => 11111 ) [userval] => Array ( [0] => ) )
Я считаю, что лучший способ - использовать встроенную функцию отправки.
Я предполагаю, что поля либо не добавляются в форму должным образом, либо неправильно назначаются.
Если вы можете опубликовать код для этого раздела, мы сможем это сделать.
Попробуйте это и посмотрите, работает ли исходный материал отправки
var count = 0;
function addRow(){
count++;
$('#tbl1').find('tbody:last').after('<tr><td>User Defined</td><td><input name="userdef['+count+']" value="" type="text"></td>/td></tr>');
}
foreach ( $_POST['userdef'] as $key => $val){
echo $key . ' = ' . $val . '\n';
}
Я думаю, что $('processme.php', $(this).serialize()).submit
. Вы хотите сделать $.get
а .submit
бесполезен.
$(document).ready(function () {
$('#form').on('submit', function(e) {
//prevent the default submithandling
e.preventDefault();
//alert(1);
//send the data of \'this\' (the matched form) to yourURL
$.get('processme.php', $(this).serialize());
});
});
Попробуйте так:
$('#form').on('submit',function() {
var url = "processme.php";
$.ajax({
type: "POST",
url: url,
data: $(this).serialize(), // serializes the form elements.
success: function(data)
{
alert(data); // show response from the php script.
}
});
return false; // avoid to execute the actual submit of the form.
});
$(\'processme.php\', $(this).serialize())
. Также покажите код, который добавляет новые поля ввода ... у них всех естьname
? Нетname
= Нет отправки