1

誰かがフォームを送信した後、成功とエラーのメッセージを出力しようとしています。

フォームの仕組みは次のとおりです。

誰かが編集ボタンをクリックして投稿を編集すると、編集したいテキストを含むボックスが「保存」と「キャンセル」ボタン<div>のあるボックスに変わります。<textarea>

「保存」をクリックすると、「投稿が更新されました」という成功メッセージか、次のようなエラー メッセージが出力される必要があります。

  • 「この投稿を編集できません」 - 投稿を編集する権限がない場合
  • 「データベースからの選択中にエラーが発生しました。後でもう一度お試しください」 - 投稿が存在しない場合
  • 「4 文字以上の投稿を入力してください」 - 投稿に十分な文字数がありません

テストページ: http://thebulb.daysofthedad.net/testing.php

Javascript:

function sendAjax(textarea_value, post_id, blog_id) {
    $.ajax({
        url: 'testing.php?action=blog_edit&post_id='+post_id,
        type: 'post',
        data: {
            postcontent: textarea_value,
            blog_id: blog_id,
            AddReplyForm: 'Post'
        },
        success: function (answer) {
            // Should output: "<div class="dialoginfo"><div class="dialoginfosub"><div class="dialoginfocontent">Post has been updated</div></div></div>"
        },
        error: function () {
            // In the PHP script I check for:
            //     If that user has permission to edit the post. If not, it returns "You can not edit this post".
            //     If the post_id exists in the database, if not, it returns "Error while selecting from database. Please try again later".
            //     If there was 4 or more characters. If not, it returns "Please enter a post with 4 or more characters".
        }
    });
}

PHP (私が PasteBin を使用している理由である長いスクリプト): http://pastebin.com/za2NFPHU

JSFiddle: http://jsfiddle.net/Draven/zsWBv/12/

編集:コードはすべて機能します。メッセージを出力するだけです。

たとえば、投稿を編集して 2 文字だけ挿入して送信すると、「4 文字以上の投稿を入力してください」というエラーが表示されるはずです。代わりに<div>、ページを更新するまでのテキストが変更され、その後、以前のテキストに戻ります。

エラーのため、変更はデータベースに保存されません。

上記でリンクしたテストページを見ると、私が説明するよりもうまく機能することがわかります。投稿を編集して保存するだけです。ボックスに 2 文字を入力してみて、[保存] をクリックします。テキストが編集内容に変更されていることがわかりますが、ページを更新すると以前の状態に戻ります。

4

2 に答える 2

0

js でチェックする方法が間違っているため、php ファイルからエラー メッセージと成功メッセージを表示します。

マニュアルから: http://api.jquery.com/jQuery.ajax/

成功 タイプ: Function( PlainObject data, String textStatus, jqXHR jqXHR )

リクエストが成功した場合に呼び出される関数。この関数には 3 つの引数が渡されます。dataType パラメータに従ってフォーマットされた、サーバーから返されたデータ。ステータスを説明する文字列。jqXHR (jQuery 1.4.x では XMLHttpRequest) オブジェクト。jQuery 1.5 の時点で、success 設定は関数の配列を受け入れることができます。各関数が順番に呼び出されます。これは Ajax イベントです。

于 2013-07-01T17:28:46.337 に答える