2012-01-17 21 views
0

$.ajax({まで正常に動作するJavaScriptがあります。その後、ただローダーでハングアップし、何も起こりません。ajax成功コールバックが機能しない

$(function() { 
$('.com_submit').click(function() { 
    var comment = $("#comment").val(); 
    var user_id = $("#user_id").val(); 
    var perma_id = $("#perma_id").val(); 
    var dataString = 'comment='+ comment + '&user_id='+ user_id + '&perma_id=' + perma_id; 
    if(comment=='') { 
     alert('Please Give Valid Details'); 
    } 
    else { 
     $("#flash").show(); 
     $("#flash").fadeIn(400).html('<img src="ajax-loader.gif" />Loading Comment...'); 
     $.ajax({ 
      type: "POST", 
      url: "commentajax.php", 
      data: dataString, 
      cache: false, 
      success: function(html){ 
     alert('This works'); 
       $("ol#update").append(html); 
       $("ol#update li:first").fadeIn("slow"); 
       $("#flash").hide(); 
      } 
     }); 
    } 
    return false; 
}); 
}); 
+2

サーバーから正常に応答してもよろしいですか? –

+0

「コメントを読み込む」以外は何も起こりません。何も起こりません。 – Sygon

+2

成功コールバックに気を使う前に、サーバーが成功を表す応答を送信していることを確認してください。実際に何が起きたのかを見るために、エラーコールバックを処理することもできます。 –

答えて

3

交換してみてください:

var dataString = 'comment='+ comment + '&user_id='+ user_id + '&perma_id=' + perma_id; 

で:

var dataString = { comment: comment, user_id: user_id, perma_id: perma_id }; 

サーバーに送信されるパラメータが適切にエンコードされていることを確実にするために。また、呼び出し元のcommentajax.phpスクリプトが正常に動作していて、何らかのエラーが発生していないことを確認してください。成功ハンドラは実行されず、ローダーインジケータは非表示になりません。実際にローディングインジケータを非表示にする最も良い方法は、successではなく、completeイベントを使用することです。 completeイベントは、例外の場合でもトリガーされます。

FireBugなどのjavascriptデバッグツールを使用して、カバーの下で正確に何が起こるかを確認してください。実際のAJAXリクエストとそのサーバが何を応答しているかを見ることができます。また、javascriptエラーがあるかどうかなども教えてくれます。javascriptが有効なウェブ開発を行っているときに、ちょっと便利なものです。

+1

+1 ...これらのことを診断するには、火薬や類似のツールが不可欠です。 –

+0

私はあなたの 'dataString'を使ってみましたが、それと同じことが起こりました。 'commentajax.php'は、ファイルを単独で実行したときと同じように、データベースに明示的にデータを挿入しないときと同じようにうまくいきます。 – Sygon

+0

@JackWillmor、OK、javascriptのデバッグツールでは何が表示されますか?サーバーサイドスクリプトは実行されていますか?それは成功するか?単独で呼び出すと、データを送信していないので、AJAX呼び出しと同じ条件で実行していないことは明らかです。 javascriptのデバッグツールを使用しないと、本当にあなたは盲人のようです。誰もあなたを助けることはできません。 –

関連する問題