【问题标题】:jQuery 1.8.1 .load html>bodyjQuery 1.8.1 .load html>body
【发布时间】:2012-09-04 06:13:53
【问题描述】:
$("#loader").load(someurl, null, function ()
{
    var html = $("#loader").html(); 
    alert(html);  //works 
});

然而,

$("#loader").load(someurl, "body", function ()
{
    var html = $("#loader").html(); 
    alert(html);  //does NOT work 
});

我尝试在 phonegap/cordova 上获取外部主机 html 数据。

filetransfer.download API 不适用于我的 html 抓取,我发现 jQuery .load 函数运行良好并认为它很有用,因为不涉及文件管理,只涉及内存。

一个问题是,由于整个 HTML 一次加载到某些 $("#loader") 上,html.body 层的 css/style-sheet 会发生冲突和混乱。

因此,我尝试仅获取 html 的正文部分 http://api.jquery.com/load/

.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )

但是,[, data] 选项永远不起作用。

"html>body" 不起作用,或者任何选择器似乎都不起作用。

这是bug吗??

【问题讨论】:

    标签: jquery ajax cordova


    【解决方案1】:

    选择器应附加到 url(以空格分隔)。

    $("#loader").load(someurl + ' body', function (){
        var html = $("#loader").html(); 
        alert(html);
    });
    

    【讨论】:

    • 谢谢。不幸的是,您的代码也不适用于我的环境(iOS5 Safari+cordova/phonegap2.0)。同样,如果没有 ,它会按预期工作。
    【解决方案2】:

    您只能使用 load 方法加载页面的一部分。您需要在第一个参数中提供选择器。 (参见Load() api 上的Loading Page Fragments 部分)

    $('#loader').load('ajax/test.html body',function(){
    var html = $("#loader").html();
    alert(html);
    
    });
    

    【讨论】:

      【解决方案3】:

      data 参数用于发出加载请求,如果要过滤页面中的内容,则必须将选择器添加到 url 的末尾,以空格分隔。

      $("#loader").load(someurl + ' body', function (){
          var html = $("#loader").html(); 
          alert(html);
      });
      

      【讨论】:

      • 谢谢。我有这个想法,官方文档将按照您的说法进行修复。话虽如此, 方式在我的环境中不起作用(iOS5 Safari+cordova/phonegap2.0)。所以我认为这可能是 iOS safari 的 jQuery 框架的一个错误。
      猜你喜欢
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多