我的.php文件中有很多字符串。我的页面会将其中一个放入名为 post 的空div中。当我想总是发布它的长度时:
未捕获的TypeError:无法读取属性'长度'未定义的
所以我假设我的jQuery代码读取<div class="post"></div>
这是空白的,直到网站加载并生成文本。那么如何才能从post.php文档中获取生成的字符串长度?
<html>
<head>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script>
function getPost()
{
$.ajax({
type: 'POST',
url: 'posts.php',
dataType: 'html',
cache: false,
success: function(result) {
$('.post').html(result);
},
});
}
getPost();
</script>
</head>
<script>
var postPoints = $(".post").val().length;
</script>
<body>
<div class="post"></div>
</body>
</html>
posts.php
<?php
$posts = array(
"string1",
"string2",
"string3",
"string4"
);
$maxPosts = sizeof($posts);
$generatePost = rand(0,$maxPosts);
if($lastPost != $generatePost)
{
echo $posts[$generatePost];
$lastPost = $generatePost;
}
else
{
$generatePost = rand(0,$maxPosts);
echo $posts[$generatePost];
$lastPost = $generatePost;
}
?>
答案 0 :(得分:3)
首先,脚本var postPoints = $(".post").val().length;
无法找到post div,因为您收到undefined
错误消息:
未捕获的TypeError:无法读取属性&#39;长度&#39;未定义的
这是因为您在页面完全加载之前尝试获取div(可以使用就绪函数修复):
$(function(){
var postPoints = $(".post").val().length;
})
这样,脚本会找到你的div ,但它总会返回&#39; 0&#39; 。
因此,在获得ajax请求的响应后,您应该获得length
,您必须将您的行放入成功回调中:
success: function(result) {
$('.post').html(result);
alert( $(".post").val().length );
},
希望这有帮助。
答案 1 :(得分:0)
function getPost()
{
$.ajax({
type: 'POST',
url: 'posts.php',
dataType: 'html',
cache: false,
success: function(result) {
$('.post').html(result);
var length = result.length; //for further uses, you may also assign this value with global variable.
},
});
}