1

ページにコメントを投稿するためにフォームを送信すると、ページにデータの配列が表示され、コメントがフェードインしたページが表示されるだけではありません。

これは、送信ボタンを押した後にブラウザーに表示されるものです (レコードは正常に挿入されます)。

{"streamid":1567,"cm":{"id":"0","avatar":"uploads\/30-av.jpg","name":"Mike<\/a>","content":"blah blah blah","time":"some seconds ago"}}

PHP

$action = $_GET['action'];
if ($action == 'blasting') {
$blast = input($_POST['blast']);
if ($blast AND strlen($blast) > 1) {
    $stm = $_DB->prepare('insert into wl_activity (user_id, action, posted_on, data) values (?, ?, ?, ?)');
    $stm->execute(array($_USER->get_user_id(), 'blast', time(), $blast));
    }
echo json_encode($array);
   }

私のフォームコード

    <script type="text/javascript" src="js/ajaxupload.js"></script>
    <script type="text/javascript" src="js/jquery.form.js"></script>
     <script type="text/javascript" src="js/newsfeed.js"></script>

 <form method="post" action="index.php?cmd=ajax&action=blasting" id="blast-form">
            <textarea class="form_input" id="blastbox" name="blast" style="width:90%" ></textarea>
            <input type="submit" id="blastbtn" value="Post" class="form_submit" />

<div id="ajax-feed"></div>

    <?php $general = array(); ?>
    <?php
        foreach ($feeds as $f) {
            if ($f['action'] == 'blast')
                array_push($general, 'blast');
                //unset($general[count($general)-1]);
            else
                array_push($general, 'normal');
        }
    ?>

ここに私の jquery.form.js がありますhttp://pastebin.com/MP3uVdcPこれ が私の newsfeed.js ですhttp://pastebin.com/ymSNjXJR

4

1 に答える 1

0

あなたのフォームは、Ajax 機能が添付されていない単純なフォームです (あなたの例でわかる限り)。

ブラウザはindex.php?cmd=ajax&action=blasting、JSON 応答が表示される に移動して、フォームを正常に送信しています。

JavaScript を使用してフォーム送信イベントにフックし、デフォルト アクション (次のページに移動) を停止して、Ajax を使用して送信する必要があります。

次に例を示します。

$("#blast-form").submit(function(e){
    e.preventDefault();
    $.post($(this).action, $(this).serialize(), function(response) {
        $('#ajax-feed').html(response);
    });
});
于 2012-10-21T00:51:04.427 に答える