最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - jQuery load(URL) not working when loading page-fragments? - Stack Overflow

programmeradmin0浏览0评论

I have this page, the first button is working good.

I want when press the second button to give me the link that is in the href, i tried like this , but i got the whole page , not just the value of the link , why please?

<html>
<head>
  <script src="jquery.js"></script>
  <script type="text/javascript">
    $(document).ready(function(){

      var url = "http://localhost/test/asdfasdf.php";

      $("#button").on("click", function() {
        $('body').load( url  );
       });

      $("#button2").on('click',function(){
        $('body').load( url +"#link" );
      });
    });
</script>
</head>
<body>
  <input type="button" id="button" value="load" />
  <input type="button" id="button2" value="search for a tag" />
</body>
</html>

I have this page, the first button is working good.

I want when press the second button to give me the link that is in the href, i tried like this , but i got the whole page , not just the value of the link , why please?

<html>
<head>
  <script src="jquery.js"></script>
  <script type="text/javascript">
    $(document).ready(function(){

      var url = "http://localhost/test/asdfasdf.php";

      $("#button").on("click", function() {
        $('body').load( url  );
       });

      $("#button2").on('click',function(){
        $('body').load( url +"#link" );
      });
    });
</script>
</head>
<body>
  <input type="button" id="button" value="load" />
  <input type="button" id="button2" value="search for a tag" />
</body>
</html>
Share Improve this question edited Apr 3, 2013 at 19:08 Ian 51k13 gold badges104 silver badges111 bronze badges asked Mar 29, 2013 at 20:23 Marco DinatsoliMarco Dinatsoli 10.6k41 gold badges152 silver badges262 bronze badges 2
  • 1 "The .load() method, unlike $.get(), allows us to specify a portion of the remote document to be inserted. This is achieved with a special syntax for the url parameter. If one or more space characters are included in the string, the portion of the string following the first space is assumed to be a jQuery selector that determines the content to be loaded." – j08691 Commented Mar 29, 2013 at 20:26
  • 1 Why don't you post the content of asdfasdf.php that way it can be a bit clearer what you are trying to do. Thank you. – Marc Audet Commented Mar 29, 2013 at 20:35
Add a ment  | 

3 Answers 3

Reset to default 4

I think you want a space:

$('body').load(url + " #link");

http://api.jquery./load/#loading-page-fragments

All you seem to want is the href of the a#link element at that URL. So instead of loading it into the <body>, just make the AJAX request, and look through the result:

$.ajax({
    type: "GET",
    url: "http://localhost/test/asdfasdf.php",
    dataType: "html"
}).done(function (data) {
    var the_link = $(data).find("#link");
    alert(the_link.attr("href"));
});

And to put the href in the <body>, add this line in the .done() method:

$("body").html(the_link.attr("href"));
// or
$("body").append(the_link.attr("href"));

But if you actually want to load the a#link element into <body>, do what you had before, but then look for the a#link element and get its attribute:

$('body').load(url + " #link", function () {
    var the_link = $("#link");
    alert(the_link.attr("href"));
});

EDIT

You're trying to capture the href of the <a> on a different page. A try:

$.get(url+' #link', function(data) {
    var $link = $(data).find('a').attr('href');
    alert($link);
});

That is my very best guess, but its a shot in the dark.

Currently your code evaluates to .load('http://localhost/test/asdfasdf.php#link'), where #link is a useless fragment. You need a space to engender jQuery's special behavior of automatic DOM parsing and element loading.

$("body").load(url + " #link");

EDIT: to get the actual link value:

$.get(url).done(function (html) {
    console.log($(html).find('#link').attr('href'));
});

You can also append to body inside of the .done callback.

发布评论

评论列表(0)

  1. 暂无评论