Php 如何在ajax之后动态生成表列?
我将jQuery(1.9.1)与jQueryMobile(1.3.0)一起使用。我对JQM中的回流焊表有问题。当我使用AJAX从脚本获取JSON数据以向表中添加更多行时,在触发刷新并创建表后,不会生成回流表标题。这是我的密码: HTML/PHPPhp 如何在ajax之后动态生成表列?,php,jquery,jquery-mobile,Php,Jquery,Jquery Mobile,我将jQuery(1.9.1)与jQueryMobile(1.3.0)一起使用。我对JQM中的回流焊表有问题。当我使用AJAX从脚本获取JSON数据以向表中添加更多行时,在触发刷新并创建表后,不会生成回流表标题。这是我的密码: HTML/PHP ''。 '' . '' . “位置”。 “名字”。 “条形码”。 “需要”。 “扫描”。 '' . '' . '' . $tableData。 '' . '' . JavaScript $('.getOrder.getStoreOrder')。在('v
''。
'' .
'' .
“位置”。
“名字”。
“条形码”。
“需要”。
“扫描”。
'' .
'' .
'' .
$tableData。
'' .
'' .
JavaScript
$('.getOrder.getStoreOrder')。在('vclick',函数(e)上{
e、 预防默认值();
var sel=此;
var theLink=$(this.attr('href');
如果(activeOrder==true){
返回false;
}
$.ajax({
url:'ajax.php',
数据:{
pa:($(sel).hasClass('getStoreOrder')?'store':'')+'order'
},
数据类型:“json”,
beforeSend:function(){
$.mobile.showPageLoadingMsg();
$('#itemTable tbody').html('';
$(“#leftPanel ul li”).not(“:first child”).remove();
},
成功:功能(数据){
testVar=数据;
var i;
对于(i=0;i我认为最好这样做:$(“#tableContainer”).load('revisedTable.php?json=yourJsonString');
这样,您就可以用php而不是javascript进行表布局。解决了这个问题。结果是jQuery Mobile 1.3.0版没有正确的.table('refresh')
method implemented。我通过升级到jQuery Mobile version 1.3.1解决了这个问题,该版本有我需要的正确方法。我不太喜欢这个解决方案,因为它会导致很多不必要的开销,而不仅仅是从ajax获取JSON并让javascript添加html。我还在编辑一个面板,因此加载一个新表是不可能的。@Mic1780好的,在您的情况下,这可能不是最好的解决方案,但我不会说与json字符串相比,一些html标记的开销很大,而且在速度较慢的客户机上,它比使用JavaScripts呈现html更快。您是说,在我没有的情况下,通过ajax发送整个表,包括标记样式、类、数据等表布局和事件已绑定。听起来适得其反。但我确实感谢您的输入=)
'<table data-role="table" id="itemTable" data-mode="reflow" class="ui-responsive table-stroke" style="display:table;">' .
'<thead>' .
'<tr>' .
'<th data-priority="1">Location</th>' .
'<th>Name</th>' .
'<th data-priority="3">Barcode</th>' .
'<th data-priority="4">Needed</th>' .
'<th data-priority="5">Scanned</th>' .
'</tr>' .
'</thead>' .
'<tbody>' .
$tableData .
'</tbody>' .
'</table>' .
$('.getOrder, .getStoreOrder').on('vclick', function(e) {
e.preventDefault();
var sel = this;
var theLink = $(this).attr('href');
if (activeOrder === true) {
return false;
}
$.ajax({
url: 'ajax.php',
data: {
pa: ($(sel).hasClass('getStoreOrder') ? 'store' : '') + 'order'
},
dataType: 'json',
beforeSend: function() {
$.mobile.showPageLoadingMsg();
$('#itemTable tbody').html('');
$('#leftPanel ul li').not(':first-child').remove();
},
success: function(data) {
testVar = data;
var i;
for (i=0; i <= data.length -1; i++) {
$('#itemTable tbody').append( '' +
'<tr id="item' + (i+1) + '">' +
'<td><span>' + data[i].Location + '</span></td>' +
'<td><a onclick="showImageOverlay(\'' + data[i].Image + '\');">' + data[i].Name + '</a></td>' +
'<td>' + data[i].Barcode + '</td>' +
'<td>' + data[i].Qty + '</td>' +
'<td>0</td>' +
'</tr>' +
'');
$('#leftPanel ul').append( '' +
'<li>' +
'<a href="#item' + (i+1) + '" class="itemLink" onclick="changeItem(\'item' + (i+1) + '\')">' +
'Item ' + (i+1) +
'</a>' +
'</li>' +
'');
}
$('#itemTable').trigger('refresh');
$('#itemTable').trigger('create');
$('#leftPanel #leftUl').listview('refresh');
},
complete: function() {
$('#rightPanel', '.ui-page-active').panel('close');
$.mobile.hidePageLoadingMsg();
//pageChange(theLink);
}
});
});