0

jquery と php を使用してページを更新せずにデータをデータベースに送信しようとしていますが、コードに何か問題があると思います。Jquery を適用しないとうまく動作します。

<!---Insert into database -->
<script type="text/javascript">
$(document).ready(function () {
    $('.chatbutton').click(function () {
        $.ajax({
            type: 'post',
            url: "insertchatmessages.php",
            success: function () {}
        });
    });
});
</script>
<!---Insert into database ends here  -->

</head>
<body>
<table class="chattable" id="chattable" border="0">
<tr><td><div id="load_tweets">

</div></td></tr>
<form id ="chatform" action="?" method="post"></td></tr>
<tr><td><input class ="chattext" type ="text" name="message"></td></tr>
<tr><td><input class="chatbutton" class="chatbutton" type="submit" value="send" name ="submit">
</div>
</table>
4

5 に答える 5

3

HTML (これはコードから派生したものですが、jsfiddle で動作するように変更されています):

<table class="chattable" id="chattable" border="0">
<tr>
    <td>
        <div id="load_tweets"></div>
    </td>
</tr>
<tr>
    <td>
        <form id ="chatform" action="/echo/html/" method="post"> <!-- your action should point to your php (insertchatmessages.php) -->
            <input type="hidden" name="html" value="This is sample text to show that this works!"/> <!-- for jsfiddle test only. remove this in your code. -->
            <input class ="chattext" type ="text" name="message" />
            <input class="chatbutton" class="chatbutton" type="submit" value="send" name ="submit" />
        </form>
    </td>
</tr>
</table>

jQuery:

$(document).ready(function(){
    $('#chatform').submit(function(e){
        e.preventDefault();
        var $form = $(this),
        data = $form.serialize();

        $.ajax({
             data: data,
             type: $form.attr("method"),
             url: $form.attr("action"),
             success: function(data){
                  $("#load_tweets").html("<p>"+data+"</p>");
             }
        });
    });
});

作業例: http://jsfiddle.net/darshanags/6vxMs/6/

注: jsfiddle で動作するようにコードを少し変更しました。セットアップで動作させるには、コードを元に戻す必要があります。

于 2013-01-24T10:58:06.590 に答える
3

.chatbutton送信ボタンです。クリックすると、jQuery ハンドラーが起動し、フォームが送信されます (これがブラウザーの既定の動作です)。jQuery スクリプトでは、以下を呼び出す必要がありますpreventDefault()

$('.chatbutton').click(function(e){
e.preventDefault();
// rest of your code

より良いのは、ハンドラーをフォーム送信機能に割り当てることです (ただし、デフォルトの動作を防ぐ必要があります)。

于 2013-01-24T10:58:12.427 に答える
0

jQueryのシリアライズが役に立ちます

<script type="text/javascript">
$(document).ready(function () {
    $('.chatbutton').click(function (e) {
        e.preventDefault();
        $.ajax({
            data: $('chatform').serialize(),
            type: 'post',
            url: "insertchatmessages.php",
            success: function () {}
        });
    });
});
</script>
于 2013-01-24T11:34:40.633 に答える
0

onclick 呼び出しの開始時の単純なユーザー e.preventDefault() は、デフォルトの動作を停止する場合に使用されます。

<script type="text/javascript">
$(document).ready(function (e) {
    $('.chatbutton').click(function () {
        e.preventDefault();
        $.ajax({
            type: 'post',
            url: "insertchatmessages.php",
            success: function () {}
        });
    });
});
</script>
于 2013-01-24T12:37:07.427 に答える
0

submitjquery 関数を使用します。

$('#chatform').submit(function() { });

完全な JS コード

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

$(document).ready(function ()
{
    $('#chatform').submit(function (e)
    {
        e.preventDefault();
        $.ajax({
            type: 'post',
            url: "random.php",
            success: function (response)
            {
                //do after response.
            }
        });
    });
});

</script>
于 2013-01-24T10:57:29.367 に答える