Javascript 通过AJAX获取页面HTML的一部分

Javascript 通过AJAX获取页面HTML的一部分,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图通过ajax将所有内容都放在id为“ajax\u container”的div中。AJAX响应包含所有页面HTML,但是当我使用选择器隔离div的内容时,它返回undefined $(".ajax-click").click(function(e){ $.ajax({ url: $(this).attr("href"), success: function(response) { alert(response);

我试图通过ajax将所有内容都放在id为“ajax\u container”的div中。AJAX响应包含所有页面HTML,但是当我使用选择器隔离div的内容时,它返回undefined

 $(".ajax-click").click(function(e){
     $.ajax({
         url: $(this).attr("href"),
         success: function(response) {
           alert(response);
           var html = $('#ajax_container', response).html();
           alert(html);
         }
     });
 e.preventDefault();
 });
正在尝试选择的HTML:

<html>
<body>
    <div id="ajax_container">
        <p>Content here</p>
    </div>
</body>
</html>

满足于此


如果您只是想获取页面的一个片段,我建议使用
.load

在上面的代码片段中,您正在加载一个名为
test.html
的页面,但只是检索ID为
\ajax\u container
的元素

因此,您的代码片段看起来像:

$(".ajax-click").click(function(e){
     // get the element clicked
     var $clickedElement = $(this),
          pageToLoad = $clickedElement.prop("href");


     $( "#ajax_container" ).load( "ajax/test.html " + pageToLoad );

     e.preventDefault();
 });
看起来您正在尝试实现客户端路由。如果您试图用ajax内容替换容器,那么您应该使用一个库来帮助您实现这一点。要使用的实体库是Path.js。下面是一个小例子的链接,它与您想要实现的内容类似


如果您只是想获取页面的一个片段,我建议使用
.load

在上面的代码片段中,您正在加载一个名为
test.html
的页面,但只是检索ID为
\ajax\u container
的元素

因此,您的代码片段看起来像:

$(".ajax-click").click(function(e){
     // get the element clicked
     var $clickedElement = $(this),
          pageToLoad = $clickedElement.prop("href");


     $( "#ajax_container" ).load( "ajax/test.html " + pageToLoad );

     e.preventDefault();
 });
看起来您正在尝试实现客户端路由。如果您试图用ajax内容替换容器,那么您应该使用一个库来帮助您实现这一点。要使用的实体库是Path.js。下面是一个小例子的链接,它与您想要实现的内容类似


如果您只是想获取页面的一个片段,我建议使用
.load

在上面的代码片段中,您正在加载一个名为
test.html
的页面,但只是检索ID为
\ajax\u container
的元素

因此,您的代码片段看起来像:

$(".ajax-click").click(function(e){
     // get the element clicked
     var $clickedElement = $(this),
          pageToLoad = $clickedElement.prop("href");


     $( "#ajax_container" ).load( "ajax/test.html " + pageToLoad );

     e.preventDefault();
 });
看起来您正在尝试实现客户端路由。如果您试图用ajax内容替换容器,那么您应该使用一个库来帮助您实现这一点。要使用的实体库是Path.js。下面是一个小例子的链接,它与您想要实现的内容类似


如果您只是想获取页面的一个片段,我建议使用
.load

在上面的代码片段中,您正在加载一个名为
test.html
的页面,但只是检索ID为
\ajax\u container
的元素

因此,您的代码片段看起来像:

$(".ajax-click").click(function(e){
     // get the element clicked
     var $clickedElement = $(this),
          pageToLoad = $clickedElement.prop("href");


     $( "#ajax_container" ).load( "ajax/test.html " + pageToLoad );

     e.preventDefault();
 });
看起来您正在尝试实现客户端路由。如果您试图用ajax内容替换容器,那么您应该使用一个库来帮助您实现这一点。要使用的实体库是Path.js。下面是一个小例子的链接,它与您想要实现的内容类似

你需要这样做

$("#TargetID").load("ajax/test.html #ajax_container");
                 //^^URL            ^^ element you want to load

等于

$('#ajax_container').find(response).html();
没有id为
ajax\u container
的元素,因此它返回未定义的您需要这样做

$("#TargetID").load("ajax/test.html #ajax_container");
                 //^^URL            ^^ element you want to load

等于

$('#ajax_container').find(response).html();
没有id为
ajax\u container
的元素,因此它返回未定义的您需要这样做

$("#TargetID").load("ajax/test.html #ajax_container");
                 //^^URL            ^^ element you want to load

等于

$('#ajax_container').find(response).html();
没有id为
ajax\u container
的元素,因此它返回未定义的您需要这样做

$("#TargetID").load("ajax/test.html #ajax_container");
                 //^^URL            ^^ element you want to load

等于

$('#ajax_container').find(response).html();

没有id为
ajax\u container
的元素,因此它返回未定义的使用当前函数,您应该使用
.html()
将html字符串设置为元素

比如说

 $(".ajax-click").click(function(e){
     $.ajax({
         url: $(this).attr("href"),
         success: function(response) {
           $('#ajax_container').load(response);
           alert("Success");
         }
     });
 e.preventDefault();
 });

然而,正如其他人所说,
.load()
也可以工作。()


我建议使用
.load()
而不是
.html()
,因为前者更干净。

对于当前函数,您应该使用
.html()
将html字符串设置为元素

比如说

 $(".ajax-click").click(function(e){
     $.ajax({
         url: $(this).attr("href"),
         success: function(response) {
           $('#ajax_container').load(response);
           alert("Success");
         }
     });
 e.preventDefault();
 });

然而,正如其他人所说,
.load()
也可以工作。()


我建议使用
.load()
而不是
.html()
,因为前者更干净。

对于当前函数,您应该使用
.html()
将html字符串设置为元素

比如说

 $(".ajax-click").click(function(e){
     $.ajax({
         url: $(this).attr("href"),
         success: function(response) {
           $('#ajax_container').load(response);
           alert("Success");
         }
     });
 e.preventDefault();
 });

然而,正如其他人所说,
.load()
也可以工作。()


我建议使用
.load()
而不是
.html()
,因为前者更干净。

对于当前函数,您应该使用
.html()
将html字符串设置为元素

比如说

 $(".ajax-click").click(function(e){
     $.ajax({
         url: $(this).attr("href"),
         success: function(response) {
           $('#ajax_container').load(response);
           alert("Success");
         }
     });
 e.preventDefault();
 });

然而,正如其他人所说,
.load()
也可以工作。()



我建议在
.html()上使用
.load()
因为前者更干净。

请显示您正在尝试使用的htmlselect@Sanpopo添加到原始问题中,请显示您正在尝试添加的htmlselect@Sanpopo添加到原始问题中,请显示您正在尝试添加的htmlselect@Sanpopo添加到原始问题中,请显示您正在尝试添加的htmlselect@Sanpopo添加到原始问题如何动态选择页面?我以前尝试过使用$(this.attr(“href”)。您也可以动态构建选择器的值。我会更新我的答案。对不起,我指的是正在加载的页面,而不是目标。正在加载的页面是单击对象的href属性。我需要获取单击对象的href属性中的#ajax_容器的内容(在您的示例中,它的名称为“ajax/test.html”)。抱歉搞混了。啊,我现在明白了。我更新了我的答案以反映这一点。您只需将href属性连接到load调用的选择器上即可。如何动态选择页面?我以前尝试过使用$(this.attr(“href”)。您也可以动态构建选择器的值。我会更新我的答案。对不起,我指的是正在加载的页面,而不是目标。正在加载的页面是单击对象的href属性。我需要获取单击对象的href属性中的#ajax_容器的内容