在使用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>
任何关于这种工作方式的帮助都会很精彩并且受到赞赏。
答案 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>
更新:我的脚本与原帖相似。它对我来说很好。