Php 如何在ajax之后动态生成表列?

Php 如何在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

我将jQuery(1.9.1)与jQueryMobile(1.3.0)一起使用。我对JQM中的回流焊表有问题。当我使用AJAX从脚本获取JSON数据以向表中添加更多行时,在触发刷新并创建表后,不会生成回流表标题。这是我的密码:

HTML/PHP
''。
'' .
'' .
“位置”。
“名字”。
“条形码”。
“需要”。
“扫描”。
'' .
'' .
'' .
$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);
        }
    });
});