jQuery加载坏了吗?

时间:2014-04-15 18:59:11

标签: jquery ajax jquery-selectors jquery-load

所以我注意到jQuery取代.html()时,甚至他们的例子都没有正常工作。我试图用AJAX问题帮助用户,突然AJAX不在我的测试页面上表现,也不是他的例子。实际上它不会将响应添加到#feedback,无论是通过$('#feedback').load()设置还是使用函数来追加数据!但是,如果你提醒数据,果然,你有整个页面(也是另一个问题,因为我们应该只抓住身体!)

jQuery发生了什么?

触发页面

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
        <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
        <script>
            $(function () {
                $('#button').click(function () {
                    $('#feedback').load('test.htm #body', function(data){
                        alert(data);
                        $('#feedback').html(data); // Append again... y u no work!?

                    });
                });
            });
        </script>
    </head>

    <body>
        <input id="button" type="submit" value="Go" />
        <div id="feedback">Welcome</div>
    </body>

</html>

测试页test.htm

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
    </head>
  <body id="body">
        Welcome again <label id="var_name" name="callBack_data" />
  </body>
</html>

此操作的结果将alert() 整个页面而不仅仅是正文。它也不会将数据附加到div。

通过将按钮类型更改为type="button",我们可以将一些数据加载到div,但没有正确的选择。

更新了适用于'Stuff

的代码
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
        <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
        <script>
            $(function () {
                $('#button').click(function () {
                    $('#feedback').load('test.htm #body');
                });
            });
        </script>
    </head>

    <body>
        <input id="button" type="button" value="Go" />
        <div id="feedback">Welcome</div>
    </body>

</html>

测试页面更新

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
    </head>
  <body>
        <div id="body">
            Welcome again <label id="var_name" name="callBack_data" />
        </div>
  </body>
</html>

1 个答案:

答案 0 :(得分:3)

.load已经完成.html部分,你不需要自己这样做。

$('#feedback').load('test.htm #body');

此外,执行<body>时会移除$("<div>").html("<body></body>"),因此按ID定位不会有效。使用id="body"

将文本换行到div中
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
    </head>
  <body>
    <div id="body">
        Welcome again <label id="var_name" name="callBack_data" />
    </div>
  </body>
</html>

这将导致

<div id="feedback">
    Welcome again <label id="var_name" name="callBack_data" />
</div>

将显示为:

  

再次欢迎