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

別物。

ボタンをクリックせずに送信が行われた場合、送信ボタンのオンクリックは期待どおりに機能しません。

たとえば、iPhone のモバイル サファリは、ボタンをトリガーせずにフォームを直接送信できます。

UmairP のバージョンの onclick を onsubmit メソッドとしてフォーム要素に追加すると、私の知る限り、すべてのプラットフォームで同じ結果が得られるはずです。

別の問題に関する私自身の質問で、iPhone フォームの詳細を確認できます。

iPad/iPhone の [Go] ボタンでフォームが投稿されないようにするにはどうすればよいですか

于 2012-10-17T06:53:33.377 に答える