使用ajax调用php脚本

时间:2015-07-18 16:59:37

标签: php jquery ajax

我正在制作聊天脚本并希望对其进行编码,以便在用户提交消息时,脚本将运行chat_new.php,然后刷新#cbox。我使用下面的代码尝试完成此操作,但不幸的是它不会重新加载。只是为了排除它,我测试没有任何jQuery和chat_new.php执行没有问题,所以它绝对是我的ajax脚本。另外,getUpdates()可以自行完成。我通过ajax发布新消息时遇到问题。

<div id="cbox" align="left">
    <script>
    $(document).ready(function() {
        setInterval(function() {
            getUpdates()
        }, 2000);
    });

    function getUpdates() {
        $("#cbox").load("/lib/chat_post.php");
    }

    $("#submitmsg").click(function() {
        $.ajax({
            type: 'POST',
            url: '/lib/chat_new.php',
            data: {
                submitmsg: 'submitmsg',
                usermsg: 'usermsg'
            },
            success: function() {
                getUpdates()
            }
        });
    });
    </script>
</div>
<form name="message" method='post' id="cbox_input">
    <input name="usermsg" id='usermsg' type="text" size="63" maxlength="255" />
    <input name="submitmsg" id='submitmsg' type="submit" />
</form>

2 个答案:

答案 0 :(得分:1)

这可能很简单,就是从脚本的第三行移动});</script>之前,这样你的函数和ajax调用都在$(document).ready(...内,因此只能得到加载DOM后处理,所有HTML元素都在页面上。

答案 1 :(得分:1)

几个问题:

您的点击处理程序在它引用的元素之前存在,并且不在document.ready内。因此它无法找到元素并且永远不会被绑定到它

修复后,您需要阻止默认表单提交过程。否则页面将在提交时重新加载

// put this inside ready()
$("#submitmsg").click(function (event) {
   event.preventDefault();
   //other code
})