0

我有一个使用 ajax 提交评论表单的页面,将其添加到数据库,然后重新显示页面,希望无需重新加载页面。

如果我自己访问脚本,它会很好用,但是当我将它加载到另一个页面时,它不会添加数据并且还会刷新提交时的页面,我想避免这种情况,这就是这样做的全部意义方法。

无论如何,这是我加载页面的方式:

<div id="wall_comments" class="msgs_holder"></div>


<script type="text/javascript">

    $('#wall_comments').load('/pages/comment.php', { wl_id:"<?=$wl_id?>" });

</script>

然后页面本身带有 jquery 代码:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>

<div style="width:100%; overflow:auto;">

<form method=post>

    <input type="text" class="inp" name="comment" id="comment"> 
    <input type=submit value="do it" name="action" onclick="update()">

    <input type=hidden name="wl_id" value="<?=$_REQUEST[wl_id]?>" id="wl_id">
    <input type=hidden name="user_id" value="<?=$userfromcookie?>" id="user_id">

</form>

</div>


<script type="text/javascript">

function update(){

    var wl_idVal = $("#wl_id").val();
    var commentVal = $("#comment").val();
    var user_idVal = $("#user_id").val();

    $.ajax({
      type: "POST",
      url: "/pages/comment.php",
      cache: false,
      data: { submit: "", wl_id: wi_idVal, comment: commentVal, user_id: user_idVal }
    });

}

</script>

最后将信息输入db(我知道这应该是mysqli,它会是)

if(isset($_POST['action'])){ 

$wl_id = mysql_real_escape_string($_POST['wl_id']);
$comment = mysql_real_escape_string($_POST['comment']);
$user_id = mysql_real_escape_string($_POST['user_id']);

$addcomment = mysql_query("insert into list_wall (
            event_id, 
            user_id,
            comment
            ) VALUES (
            '$wl_id',
            '$user_id',
            '$comment'
            )   ",$db);

if(!$addcomment) { echo 'result error add comment'; echo mysql_error(); exit; } // debug

}
4

2 回答 2

1

问题是当您单击提交按钮时,页面已提交并且功能更新无法工作。您必须使用return false 取消默认提交机制;

<input type=submit value="do it" name="action" onclick="update() return false;">
于 2012-10-17T06:48:53.663 回答
0

另一件事。

如果提交是在未单击按钮的情况下引起的,则提交按钮上的 onclick 将无法按预期工作。

例如,iPhone 上的移动 safari 可以直接提交表单而无需触发按钮。

如果您将 UmairP 的 onclick 版本作为 onsubmit 方法添加到表单元素,据我所知,您应该在每个平台上获得相同的结果。

您可以在我自己关于另一个问题的问题中查看有关 iPhone 表单的更多详细信息。

如何防止 iPad/iPhone 上的 Go 按钮发布表单

于 2012-10-17T06:53:33.377 回答