解决本地主机上jQuery.get()返回null的问题

Solution to jQuery.get() returning null on Localhost?

本文关键字:返回 null 问题 get 主机 jQuery 解决      更新时间:2023-09-26

我在本地主机上测试时遇到了让jQuery正确工作的问题。

给我带来麻烦的函数:

function poll() {
        $.get(location.href, function(data) {
            var x = $('#datadump', data);
            alert(x.html());
        });
    }

其中location.href = http://localhost/polltest.php

警告只返回null,而不是PHP的rand函数产生的随机数。localhost/polltest.php的源代码是:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript">
        function poll() {
            $.get(location.href, function(data) {
                var x = $('#datadump', data);
                alert(x.html());
            });
        }
    </script>
</head>
<body onload="poll();">
    <div id="datadump">
        <?php
            $val = rand(0, 100);
            echo $val;
        ?>
    </div>
</body>
</html>

关于这个工作方式的任何帮助将是美妙的和感激。

可以通过多种方式实现id为datadump的div值。

方法之一是

   function poll() {
        $.get(location.href, function(data) {
            x = $(data).filter('#datadump');
            console.log(x);
        });
    }

你失败的原因:

当你有一个包含<html>, <head>, <body>标签的HTML字符串,并且你尝试做

$(string)

这些元素将被忽略。只有那些可以放在div中的元素才是有效的。请参阅jQuery文档。

当传入复杂的HTML时,一些浏览器可能不会生成DOM它完全复制所提供的HTML源。如前所述,我们使用浏览器的.innerHTML属性来解析传递的HTML并插入将其放入当前文档中。在此过程中,一些浏览器过滤掉某些元素,如<html>, <title>, or <head>元素。因此,插入的元素可能不具有代表性

这个问题已经在这个链接上进行了详细的讨论:https://stackoverflow.com/a/5642602/410367

你可以试试这个方法吗,

<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        var x = $('#ads');
        alert(x.html());
         $.get(location.href, function (data) {
            var x = $('#ads', data);
            alert(data);
            alert(x.html());
        });
    });
</script>
</head>
<body>
  <div id="datadump">
    <?php
        $val = rand(0, 100);
        echo $val;
    ?>
  </div>
</body>

更新:我已经改变了脚本有点类似于你原来的帖子。