解决jQuery.get()在Localhost上返回null的问题?

时间:2011-12-29 07:03:03

标签: javascript jquery

在使用Localhost进行测试时,我遇到了使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>

任何关于这种工作方式的帮助都会很精彩并且受到赞赏。

2 个答案:

答案 0 :(得分:1)

使用id datadump可以有多种方法来实现div的值。

其中一种方式

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

你失败的原因:

如果您的HTML字符串包含<html>, <head>, <body>个标记,并且您尝试执行

$(string)

这些元素将被忽略。只有那些可以放在div中的元素才有效。请在jQuery documentation.

中阅读
  

传递复杂的HTML时,某些浏览器可能无法生成DOM   它完全复制了提供的HTML源代码。如上所述,我们使用   浏览器的.innerHTML属性,用于解析传递的HTML和插入   它进入当前的文件。在此过程中,某些浏览器   过滤掉某些元素,例如<html>, <title>, or <head>   元素。结果,插入的元素可能不具有代表性   传递的原始字符串。

此问题已在此链接中详细讨论过:https://stackoverflow.com/a/5642602/410367

答案 1 :(得分:0)

你能这样试试吗,

<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>

更新:我的脚本与原帖相似。它对我来说很好。