Jquery& Ajax - GET请求文本未显示在文本框上,但显示在div上

时间:2015-11-11 02:03:06

标签: javascript jquery ajax

所以我有一个页面,其中有一个文本框,可以在按键上更新,并在用户输入时立即保存到数据库。

所以这是我的textarea:

<textarea id="text"></textarea>

我想要的是什么:

用户在两个不同的标签tab1tab2中两次打开同一页面。它们是完全相同的页面,但只打开了两次。现在,如果用户转到tab1并开始在文本区域中输入,它将立即更新并保存到数据库,并且通过GET请求,它将显示在tab2上。它工作得很好。我将间隔设置为1秒。因此,每次我在tab1上输入内容时,它都会自动将tab2上的旧文本替换为较新的文本。

请记住,我正在输入并替换文本区域中的文本。

现在问题出现了:当用户输入tab1并决定转到tab2并对其进行修改时,tab2中所做的更改将不会显示在tab1中{1}},但GET请求仍然成功。它不会更新文本区域。反之亦然。编辑完文本区域后,如果用户输入内容,则任一选项卡中的文本区域都不会更新。

为了测试它,我创建了一个div <div id="test"></div>,这在两个标签中都是一致的。无论在哪个选项卡上进行更改,它都会在任一选项卡上每秒更新一次。

我的javascript代码:

 <script>
    $(document).ready(function () {
        var interval = function () {
            $.ajax({
                url: "<?php echo base_url('home/get') ?>",
                cache: false,
                success: function (html) {
                    $("#text").text(html);
                    $("#test").text(html);
                },
            });
        };

        setInterval(interval, 1000);
    });
</script>

非常感谢任何帮助。

非常感谢。

3 个答案:

答案 0 :(得分:1)

好的,我修好了。

我不知道它为什么会起作用,而是取代

$("#text").text(html);

$("#text").val(html);

修好了。

我不知道它为什么有效但它有效。

答案 1 :(得分:0)

.val()是从输入/ textarea中获取值的jQuery方法。它与vanilla JS中的.value属性相对应。 .tex()适用于使用.textContent属性的节点。我希望这有助于澄清你所做的改变为何有效。

答案 2 :(得分:0)

正如sagarthapa提到的那样 .val()适用于输入元素。而 .text()抓住&#34;隐藏&#34;在DOM中称为 DOMTextNode 的节点,其中大多数元素具有(但不是输入元素)。如果有嵌套元素,它将在读取时连接子元素文本节点。根据我的理解,当使用 .text()进行书写时,它将覆盖所有内部html和文本节点。