Ajax .load从服务器检索内容

时间:2016-09-09 04:02:28

标签: javascript jquery ajax

这是一个简单的疑问: 当我们使用$('#content').load( "page.php #content");之类的内容时,它会在服务器端加载整个page.php""然后提取#content元素或只加载指定的元素?

除此之外,这个$('#content').load( "page.php #content");是否与此相同:

$.ajax({
    url:"page.php",
    type:'GET',
    error: function(){
        alert("Oops!"); // Em caso de o AJAX dar erro (opcional)
    },
    success:
    function(data){
        $('#content').html($(data).find('#content').html());
    }
});

说到"从服务器获取的方法"?

1 个答案:

答案 0 :(得分:2)

是的,那些将是相同的,XMLHttpRequest无法加载部分页面 jQuery拆分url和给定的选择器,然后根据url加载整个页面,然后使用find()将基于传入选择器的给定元素作为过滤器提取。

这是jQuery' load()的缩短版(略有修改版),只是为了展示它是如何运作的

function(url, params, callback) {
    var selector, div, html, self = this;

    // if the url param contains a space, get the selector to use as filter
    if ( url.indexOf(" ") > -1 ) { 
        selector = jQuery.trim(url.slice( url.indexOf(" ") ));
        url = url.slice(0, url.indexOf(" "));
    }

    // make regular ajax call
    jQuery.ajax({
        url      : url,
        type     : "GET",
        dataType : "html",
        data     : params
    }).done(function(responseText) {
        div  = jQuery('<div>');
        html = jQuery.parseHTML(responseText);

        self.html(  div.append( html ).find(selector) );
    });

    return this;
}