Javascript 我应该将PHP与ajax结合起来将数据发布到服务器吗?

Javascript 我应该将PHP与ajax结合起来将数据发布到服务器吗?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,假设页面在提交评论表单后总是刷新。这很烦人,因为评论不在页面的顶部,你总是要滚动到底部才能看到你的评论和其他评论 我认为使用ajax提交表单会更好 HTML <form id="com-form" method="post"> <textarea type="text" name="text" required=""></textarea> <input type="submit" value="Post"/> </form&

假设页面在提交评论表单后总是刷新。这很烦人,因为评论不在页面的顶部,你总是要滚动到底部才能看到你的评论和其他评论

我认为使用ajax提交表单会更好

HTML

<form id="com-form" method="post">
    <textarea type="text" name="text" required=""></textarea>
    <input type="submit" value="Post"/>
</form>
<div id="com-refresh"></div>
PHP

<?php
session_start();
require_once 'comment.class.php';           //require a class with methods
$text = $_POST['text'];
if($_SESSION['status'] == 'loggedin') {
    if(isset($text)) {
        $comment = new Comment();           //initialize the Comment object
        echo $comment->add_comment($text);  //safe the comment in the database and output it
    } else echo "Your comment is empty.";
} else echo "Please log in to post comments.";

只需在使用
标题('location:comments/build.php')完成过程后,将文件从
add.php
重定向到
build.php
或其他一些,因此第二个ajax调用是不必要的。

您可以简单地执行以下操作:

$(document).ajaxSuccess(function(e, xhr, settings) { 
    $(".mydiv").html(xhr.responseText);     
});
让您的php文件打印您想要替换的html

进一步阅读:

您的解决方案示例

表格文件:

<form method="post">
    <textarea type="text" name="comment" id="com-area"></textarea>
    <input type="submit" id="com-submit"/>
</form>
<div id="com-refresh">
    <?php require_once "comments/build.php"; ?>
</div>
$(function() {
    $(".cmtx_form").submit(function(e) {
        e.preventDefault();
        var form = $(this);
        var text = $(".cmtx_textarea_field").val();
        $.ajax({
            type: 'POST',
            url: 'comments/add.php?ajaxCall=true',
            cache: false,
            data: { comment: text }
        });
     });
  });

$(document).ajaxSuccess(function(e, xhr, settings) { 
    $("#com-refresh").html(xhr.responseText);     
});

问题在于php代码。我已经用OOP风格重写了生成注释的函数,这很有帮助。我编辑了《知道》这篇文章,以便将来有用

简而言之:

  • 使用ajax!你的网站的用户体验会更好,因为你可以提供实时更新等
  • 建议使用内置jQuery函数将数据安全地转换为“标准URL编码表示法中的文本字符串”,这样可以使您的工作更加简单
  • 我知道有很多关于OOP的讨论,但它确实有助于更轻松地理解、组织和维护代码

只需在使用header('location:comments/build.php')完成过程后,将文件从add.php文件重定向到build.php即可;或者其他一些,所以第二个ajax调用是不必要的。好吧,我忽略了第二个ajax,并将其重定向到add.php中的build.php,在我的浏览器控制台中,我得到:add.php 302被临时移动,build.php 403被禁止。add.php和build.php文件都位于相同的位置还是不同的位置?并在add.phpno中发布标题代码,实际上它们位于不同的位置。下面是标题的答案:缓存控制无存储,无缓存,必须重新验证,后检查=0,前检查=0连接保持活动内容长度0内容类型文本/html日期2014年4月30日星期三10:55:20 GMT过期,1981年11月19日星期四08:52:00 GMT保持活动超时=4,max=500 Location/php/comments/includes/build.php Pragma no cache Server Apache/2.4how about代替serialize()尝试使用
var text=$(“textarea#com area”).val()
数据:{post_data:text},
?好的,我去掉了第二个ajax,重定向到add.php中的build.php,在我的浏览器控制台中,我得到:add.php 302临时移动,build.php 403被禁止。我得到build.php 408请求超时OK我现在已经添加了add.php fie的内容并更新了jquerywhere是您的ajaxSuccess函数?但是忘记第一个ajax,首先,我只想在表单提交后重新包含build.php文件,以便再次生成注释部分,现在是否成功添加注释无关紧要。请尝试使用require而不是require\u一次
<form method="post">
    <textarea type="text" name="comment" id="com-area"></textarea>
    <input type="submit" id="com-submit"/>
</form>
<div id="com-refresh">
    <?php require_once "comments/build.php"; ?>
</div>
$(function() {
    $(".cmtx_form").submit(function(e) {
        e.preventDefault();
        var form = $(this);
        var text = $(".cmtx_textarea_field").val();
        $.ajax({
            type: 'POST',
            url: 'comments/add.php?ajaxCall=true',
            cache: false,
            data: { comment: text }
        });
     });
  });

$(document).ajaxSuccess(function(e, xhr, settings) { 
    $("#com-refresh").html(xhr.responseText);     
});
// ... code code code...
if (isset($_GET['ajaxCall']) && $_GET['ajaxCall']) {
    include_once('/path/to/build.php');
}