我想用$.getJSON
调用填充表:
$.getJSON("localhost/url",
function (data) {
$.each(data.reporting_list.reporting, function (i, item) {
rows = '<tr><td>' + item.data1 + '</td><td>' + item.data2 + '</td></tr>'
});
$('#aaa').append(rows);
});
填充之后我想发布一些页面更改:
$.mobile.changePage("#homePage");
但是页面在$.getJSON
完成之前发生了变化
我想在$.getJSON
完成后才更改页面,而是显示ajaxloader。
答案 0 :(得分:7)
待办事项
$.getJSON("localhost/url", function (data) {
$.each(data.reporting_list.reporting, function (i, item) {
rows = '<tr><td>' + item.data1 + '</td><td>' + item.data2 + '</td></tr>'
});
$('#aaa').append(rows);
//move to the page in the callback itself
$.mobile.changePage("#homePage");
});
答案 1 :(得分:4)
虽然Arun P Johny已经给出了答案,但我只想更清楚地说明,在jQuery中正确使用$.get()
方法
根据http://api.jquery.com/jQuery.get/#jQuery-get1 $.get()
方法实际上是
jQuery.get( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )
两个块即data
和success
只会在请求完成时调用,因此您可以在任一块中调用此函数$.mobile.changePage("#homePage");
即。在function (data) { }
块中,如Arun P Johny建议的那样,或者您可以在下面的任何其他回调中调用它。
var jqxhr = $.get("example.php", function() {
alert("success");
})
.done(function() { alert("second success"); })
.fail(function() { alert("error"); })
.always(function() { alert("finished"); });
与$.ajax()
一样,上述回调分别作为success
error
和complete
希望这有帮助
答案 2 :(得分:2)
ajaxcall(function(){ $.mobile.changePage("#homePage");});
function ajaxcall(callback){
$.getJSON("localhost/url", function (data) {
$.each(data.reporting_list.reporting, function (i, item) {
rows = '<tr><td>' + item.data1 + '</td><td>' + item.data2 + '</td></tr>'
});
$('#aaa').append(rows);
//move to the page in the callback itself
callback();
});
同样使用回调功能,您也可以尝试这种方式