Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在初始化之前调用表上的方法;试图调用方法';刷新';_Javascript_Jquery_Jquery Mobile_Jquery Mobile Table - Fatal编程技术网

Javascript 无法在初始化之前调用表上的方法;试图调用方法';刷新';

Javascript 无法在初始化之前调用表上的方法;试图调用方法';刷新';,javascript,jquery,jquery-mobile,jquery-mobile-table,Javascript,Jquery,Jquery Mobile,Jquery Mobile Table,我想列出从数据库表到HTML页面的所有数据。当前共有3行数据,但仅列出2行数据 HTML. 使用者 全体人员 许可证 JS. 函数searchperson(){ var xmlhttp=new XMLHttpRequest(); var url=serverURL()+“/searchfriends.php”; url+=“?userid=“+localStorage.getItem(“userid”)+”&search=“+ $(“#搜索”).val(); xmlhttp.onread

我想列出从数据库表到HTML页面的所有数据。当前共有3行数据,但仅列出2行数据

HTML.


使用者
全体人员
许可证
JS.

函数searchperson(){
var xmlhttp=new XMLHttpRequest();
var url=serverURL()+“/searchfriends.php”;
url+=“?userid=“+localStorage.getItem(“userid”)+”&search=“+
$(“#搜索”).val();
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
getSearchResults(xmlhttp.responseText);
}
}
open(“GET”,url,true);
xmlhttp.send();
}
函数getSearchResults(响应){
var arr=JSON.parse(响应);
var i;
$(“#mybody”).find(“tr”).remove();
对于(i=0;i

我希望列出所有数据,但只列出了2行数据。[未捕获错误:无法在初始化之前调用表上的方法;尝试调用方法“刷新”。]我使用了jquery移动页面id,它消除了错误,但仍然缺少数据。请提供帮助,非常感谢。

对于JQM表格小部件,该方法称为
重建
(参考:)

由于http请求的异步行为,您可能不知道何时会收到响应,因此处理该响应的最简单方法是检查表小部件是否已实例化,然后调用所需的方法:

函数isInstanceOf(id,小部件){
var el=document.getElementById(id);
return!!$.data(el,'mobile-'+小部件);
}
函数addRow(id,evt){
var html='',
$table=$(“#”+id),
isInstance=isInstanceOf(id,'表'),
tableMethod=isInstance?“重建”:null;
html+='';
html+=''+id+'';
html+=''+evt+'';
html+=''+isInstance+'';
html+=''+(iInstance?tableMethod:'[create]')+'';
html+='';
$table.find('tbody').append(html);
$table.table(tableMethod);
}
$(文档).ready(函数(){
addRow(“CoTable”、“DomReady”);
});
$(文档).on(“pagecontainercreate”,函数(e,ui){
addRow(“CoTable”,e.type);
} );
$(文档).on(“tablecreate”,函数(e,ui){
addRow(e.target.id,e.type);
});

jQuery移动表
身份证件
来源
实例
方法

加载页面时,需要执行
$(“#CoTable”).table()
(可能的选项作为参数)来初始化表。请参阅@Barmar上的示例。api提到,如果表具有
数据模式=“回流”,它将自动初始化
。因此这可能更多的是调用
getSearchResults
的时间问题。@Taplar它可能是在执行搜索的AJAX请求的回调中调用的。因此,jquery移动库应该已经加载了。删除
pageinit
函数。添加
$('#CoTable')。表('rebuild');
<script src="lib/jquery-1.11.2.min.js"></script>
<script src="lib/jquery.mobile-1.4.5.min.js"></script>
<div class="expandable-content">
    <div id="SearchResult" class="ui-content">
        <table data-role="table" data-mode="reflow" class="uiresponsive" id="CoTable">
            <thead>
                <tr>
                    <th>User</th>
                    <th>Personnel</th>
                    <th>License</th>
                </tr>
            </thead>
            <tbody id="mybody"></tbody>
        </table>
    </div>
</div>
function searchperson() {
    var xmlhttp = new XMLHttpRequest();
    var url = serverURL() + "/searchfriends.php";
    url += "?userid=" + localStorage.getItem("userid") + "&search=" + 
    $("#search").val();

xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        getSearchResults(xmlhttp.responseText);
    }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
function getSearchResults(response) {
    var arr = JSON.parse(response);
    var i;
    $("#mybody").find("tr").remove();
    for (i = 0; i < arr.length; i++) {
        $("#mybody").append("<tr><td>" + arr[i].userid +
            "</td><td>"
            + arr[i].personnel + "</td><td>"
            + arr[i].license + "</td></tr>");
    }

    $('#Results').bind('pageinit', function () {
    $('#CoTable').table('refresh');
    //$("#CoTable").table('refresh');
}