誰かがフォームを送信した後、成功とエラーのメッセージを出力しようとしています。
フォームの仕組みは次のとおりです。
誰かが編集ボタンをクリックして投稿を編集すると、編集したいテキストを含むボックスが「保存」と「キャンセル」ボタン<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 文字を入力してみて、[保存] をクリックします。テキストが編集内容に変更されていることがわかりますが、ページを更新すると以前の状態に戻ります。