2011-07-25 10 views
0

私は、fancyboxモーダルを使用して、mysqlデータベースから取得したニュースページのコメントを表示しています。このモーダルには、ユーザーが新しいコメントを投稿できるセクションもあります。私はjqueryを使用して、フォーム情報を別のスクリプトに送信して処理しています。Javery ajaxがモーダルでリフレッシュしない

成功したメッセージを返す代わりに、モーダルに情報を表示する代わりに、情報をポストしてページにリダイレクトしています。ここで

は、この現象が発生するようになりますjQueryの:

$(document).ready(function(){ 
$("#submit").click(function() { 
/* Set some vars */ 
         var messageText = $("textarea#message").val(); 
         var newsID = $("hidden#newsid").val(); 


         $.post('/process/newmsg.php', 
          { message : messageText, newsid: newsID }, 
          function(data) { 
           $("#fancybox_content").before(data); 
          } 
         ); 



}); 

});

私はここで何が不足していると思いますか?

答えて

1

これは有効なセレクタではありません:$( "hidden#newsid")。だから、 "newsIDは" 空で、ポストパラメータは $( "#のfancybox_content")HTML(データを)試してみてください、構文エラーに

{ message : messageText, newsid: }, 
+0

有効なセレクタかどうかは、phpスクリプトにnewsidを送信しています。それは正常にデータベースに追加しています。それは同じページにメッセージを表示しません。 – Eric

+0

はい、もちろんです。とにかく

(図示せず)が提出されているためです。クリックイベントの伝播を停止する必要があります。 Clickハンドラでfalseを返すだけで、あなたのスクリプトはどんなnewsidも受け取らないことがわかります – Claudio

0

を与えます。

before()は、結果をfancybox_contentの中に入れません。それは、その前に配置されます。

また、結果がヘッドなどを含む完全なHTMLドキュメントである場合、問題が発生します。最初に結果を解析する必要があります

0

#submitが送信ボタンであると仮定すると、そのボタンのデフォルト動作をキャンセルする必要があります。これはフォームを送信することです。クリックハンドラ関数からfalseを返すか、e.preventDefault()を使用してください。

関連する問題