我想要做的是:当用户点击发送时,我希望数据显示在<tr/>
中(每个字段都嵌套在自己的<td/>
中)。 / p>
我已经编写了一个实际执行此操作的脚本,但系统尚未动态。
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)
);
有关如何执行此操作的任何提示?或者你会有一个更清洁的解决方案吗?
答案 0 :(得分:8)
这行代码:
row += "$('<td>').append("+dataString[i]+")";
不创建元素并向其附加数据,它只是连接row
变量和字符串文字(包含jQuery代码)。
为什么不将row
设为实际行 - 而不是包含行内容的字符串 - 然后将其附加到success
回调处理程序中:
var row = $('<tr>');
for(var i = 0; i < n; i++) {
row.append($('<td>').html(dataString[i]));
}
然后:
$('#results').append(row);
答案 1 :(得分:0)
var row = '<tr>';
var col = '';
for(var i=0;i<dataString.length;i++)
col += '<td>'+dataString[i]+'</td>';
row += '</tr>';
$('#results').append(row);
答案 2 :(得分:0)
尝试这个,它肯定会有效。
var str ='<tr>';
$.each(dataString, function(i){
str += '<td>' + this + '<td>';
}
$('#results').append(str + '</tr>');