2010-12-02 14 views
2

Google Chrome 7.0.xを使用していて、ユーザーがボタンをクリックしたときに呼び出されるjavascript関数を持っています:Google Chrome:onclick-event内でjquery.ajaxが失敗する(「リソースの読み込みに失敗しました」)

function myFunction(myId) { 
$("#" + myId).click(function() { 
    $.ajax({ 
    type: "POST", 
    url: "myURL", 
    success: function(msg){ 
    alert (msg); 
    } 
}); 
}); 

alert()が呼び出されることはなく、コンソールにロックすると「リソースを読み込めません」というメッセージが表示されます。私は間違って何をしていますか?

+0

asp.net httpハンドラを使用していますか? –

+0

firefoxについて、Fire Panelはネットパネルに何が表示されているのですか?私はChromeで何か問題はないとは思わない、あなたのURLは間違っているように見える – kobe

+0

何かしてURLを取ってブラウザに貼り付けて何が起きているか確認してください – kobe

答えて

4

clickハンドラの最後にreturn falseをお忘れですか?

+0

@thorn、それはエラーを投げるべきではありません – kobe

+0

ありがとう、それは私の問題を解決しました!私はまだ理解していませんが、なぜ "return false"が必要なのか、実際には何が行われるのですか... –

+3

falseを返さないでください。jquery apiから 'e.preventDefault();' – Webnet

0

するとエラーが何であるかを確認するために、これを試してみてください:

function myFunction(myId) { 
$("#" + myId).click(function() { 
    $.ajax({ 
    type: "POST", 
    url: "myURL", 
    success: function(msg){ 
    alert (msg); 
    }, 
    error: function (error, t, msg) { 
    console.log(error); 
     console.log(t); 
     console.log(msg); 
    } 
}); 
}); 

たぶんあなたのURLが間違っている

+0

あなたのクイック返信に感謝します。あなたのコードを追加しましたが、次のようなことが起こります:ajaxメソッドが呼び出されると、私はlaoding-imageを見て、読み込み中はコンソールを見ることができます。しかし、2秒後(実際にエラーが表示されるまでに十分な時間がない)、ログが消えてブラウザの読み込みが停止します。ブラウザーがページ全体をリロードしているような感じです。 –

+0

@passer、ネットパネルをfirebugで開いて結果を確認して、他のコメントを確認してください。 – kobe

+0

@passer、myURLは二重引用符で囲まれています。ダイナミクスの場合は引用符を付けないでください... – kobe

0

私はあなたのURLが間違っている賭け、それは問題を修正する必要があり、FirebugのネットパネルからURLをご確認ください。

上記のコードではクロムに問題はありません。

5

function (e) {の代わりにe.preventDefault();のすぐにクリックイベントのデフォルトのアクションを停止し、何をするように指示する必要があります。これは、値としてfalseを返すことを常に望むとは限らないので、はるかに優れた方法です。

function myFunction(myId) { 
    $("#" + myId).click(function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      type: "POST", 
      url: "myURL", 
      success: function(msg){ 
       alert (msg); 
      } 
    }); 
} ); 
関連する問題