0

我想用$.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。

4

3 回答 3

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");    
});
于 2013-08-29T04:59:07.860 回答
4

虽然Arun P Johny已经给出了答案,但我只是想让它更清楚,$.get()在 jQuery 中正确使用方法

根据http://api.jquery.com/jQuery.get/#jQuery-get1$.get()方法其实是

jQuery.get( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )

where 两个block ie dataandsuccess只会在请求完成时调用,所以你可以$.mobile.changePage("#homePage");在任何一个block中调用这个函数

即在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 errorcomplete分别工作

希望这可以帮助

于 2013-08-29T05:11:51.587 回答
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();
});

也使用回调函数,您也可以尝试这种方式

于 2013-08-29T05:09:45.003 回答