Что бы я хотел сделать, так это: когда пользователь нажимает на отправку, я хочу, чтобы данные отображались в <tr/>
(каждое поле было вложено в свой собственный <td/>
).Динамически генерировать строку таблицы на успехе AJAX
Я уже написал сценарий, который на самом деле это делает, но система еще не динамична.
HTML:
<form name="contact" method="post" action="">
<p>
<label for="name">Name</label>
<input type="text" name="name" id="name" />
</p>
<p>
<label for="age">Age</label>
<input type="text" name="age" id="age" />
</p>
<p>
<label for="mail">Mail</label>
<input type="text" name="mail" id="mail" />
</p>
<p>
<input type="submit" name="submit" id="submit" value="Send" />
</p>
</form>
<table id="results"></table>
JS:
$(function() {
$("#submit").click(function() {
var name = $("input#name").val();
var age = $("input#age").val();
var mail = $("input#mail").val();
var dataString = [name, age, mail];
var n = dataString.length;
$.ajax({
type: "POST",
url: "process.php",
data: dataString,
success: function() {
$('#results').append(
$('<tr>')
.append($('<td>').append(dataString[0]))
.append($('<td>').append(dataString[1]))
.append($('<td>').append(dataString[2]))
);
}
});
return false;
});
})
Как вы можете видеть, я хватаю поля вручную с dataString[x]
, но как я могу сделать эту систему динамический?
Я думал об использовании цикла, как в следующем, но я не могу заставить его работать:
for(var i = 0; i < n; i++){
row += "$('<td>').append("+dataString[i]+")";
}
$('#results').append(
$('<tr>')
.append(row)
);
любой намек о том, как это сделать? Или у вас есть более чистое решение?
Когда вы на самом деле нажимаете кнопку отправки, форма отправляется, и страница обновляется. Вы можете изменить тип ввода на кнопку и использовать существующий JS-код. – Vimalnath
@vimalnath Нет, нет; 'return false;' в конце функции, связанной с обработчиком события, предотвращает это. –