获取使用ajax生成的div中的文本长度

时间:2016-12-05 16:35:36

标签: php jquery ajax

我的.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;
    }
?>

2 个答案:

答案 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.
        },
    });
}