2011-06-25 8 views
0

HTMLページにはフォームの一部ではないボタンがあります。jquery ajax呼び出しによってページがリフレッシュされています

<input type='button' id='submitter' value='add'/> 

私はそれをクリックハンドラを持っている:

$('#submitter').click(function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    var args={} 
    $.get('notexists.php', args, function() {alert('what?');}, 'json') 
     .error(function(){ alert('error'); }); 

    return false; 
} 

さて、notexists.phpは存在しないので、クリックしてerrorを警告する必要があります。しかし何らかの理由で、私はボタンをクリックするとページがリフレッシュされます!

私は問題を特定しようとしたいくつかの実験:

  1. ハンドラ(ノーリターン偽、ノーデフォルトを防ぐため、無停止小道具、ノーjqueryのポストコール - 何も) - から取り出し、すべてのページがしましたクリックしても更新されません。ボタンは送信ボタンではなく、フォームには属しません。
  2. が削除されました。更新はありません。
  3. Firebugの「エラー時ブレーク」機能を有効にして、再度クリックしてみました。エラーはありません。
  4. 投稿URLが存在していて動作しています - まだ更新中です
  5. は$ .post呼び出しの後に "警告"が追加されました。実行が$ .postで中断するようですが、エラーはありません(実験3)。
  6. は、入力を同じIDの「div」に変更しました。同じ結果 - ページが更新されます。

誰でも手助けできますか?

PS:私はこのアプリの他の多くの部分で$ .postを使用しており、どこでも期待どおりに動作しています。

+0

のような何かを行うことによって、あなたのセレクタをテストします。 –

+0

実行が 'return false'ステートメントに達しないため、ページが最もよくリフレッシュされます。 try/catchブロックを置いて、catchでfalseを返してみてください。 – Pasman

+0

@Pasman return falseはそれとは関係ありません。私のアプローチ1とアプローチ6を読んでください。 – jrharshath

答えて

1

イベントをバインドしようとしたときに$('#submitter').lengthをチェックしましたか?たぶんあなたはドームにIDの重複がありますか?閉じたbodyタグの前、またはjquery doc readyブロックの中でスクリプトを実行していますか?

完全なコードサンプルを投稿すると、私が提示した質問を排除するのに役立ちます。

+0

イベントハンドラが動作している - それは$( '#submitter')のliengthがゼロではないという意味ですか? – jrharshath

1

セレクタがボタンを選択していないと考えられますので、イベントハンドラは適用されていません。私はあなたが投稿したコードがページリフレッシュを起こさないことがあり、完全なドキュメント・ソースを表示してくださいと確信している

$("#submitter").val('Test'); 
+0

彼は、ポイント2で、「削除された.postコール - リフレッシュなし」というイベントが実行されると述べました。 – Pasman

+0

問題のサンプルコードには$ .postコールはありません。 – slypete

+0

$ .post/$ .get、彼はおそらく両方のバージョンを試しました:) – Pasman

関連する問題