-1

我必须在一个页面中多次使用 jquery 的 $.post 函数。此外,我必须使用从 post 方法返回的数据进行过滤。所以我把post函数是这样的:

$(document).ready(function(){
function loadData(url){
$.post(url,function(data){
var $data = data;
});
}

var raw = loadData(page01.php).filter("#someId").html();
$("#content").html(raw);

var raw = loadData(page02.php).filter("#anotherId").html();
$("#content2").html(raw);
});

但它不起作用。任何修改上述代码的帮助将不胜感激。问候

4

1 回答 1

1

您不能像在 jquery 中那样在函数之后神奇地调用另一个方法,您loadData('page02.php').filter的函数需要返回 jQuery 对象才能使其工作,在您的情况下,您的 loadData 函数不返回任何内容。但是你不能返回 jQuery 对象,因为它是异步调用。如果服务器返回的内容是 html,那么要修改该 html,您需要添加回调函数,因为这是在 ajax 调用之后应用某些内容的唯一方法。

您的代码应如下所示:

$(document).ready(function(){
    function loadData(url, callback) {
        $.post(url, function(data){
            callback($(data)); // not sure if jquery detect if the content is 
                               // html here, if yes then you can remove $( )
        });
    }

    loadData('page01.php', function(html) {
        var raw = html.filter("#someId").html();
        $("#content").html(raw);
    });

    loadData('page02.php', function(html) {
        var raw = html.filter("#anotherId").html();
        $("#content2").html(raw);
    });
});
于 2013-06-21T13:40:29.967 回答