2010-11-24 17 views
1

このコードはFF、Chrome、IE6/8では動作しますが、SafariやOperaでは動作しません。 アイデアは何故ですか?ここでJquery AjaxがOperaとSafariで動作しないのはなぜですか?

コードです:

var name = $('#esm').val(); 
     var email = $('#nam').val(); 
     var message = $('#med').val(); 
     var ad_id = $('#i_d').val(); 

    var data_string = 'esm='+ name + '&nam=' + email + '&med=' + message + '&i_d=' + ad_id; 

      $.ajax({ 
       type:  "POST", 
       url:  "/my_php_file.php", 
       data:  data_string, 
       success: function(data) { 
        $('#tip_loader').hide(); 
       if(data==1){alert('success'); } 
       else {alert('error'); } 
         }//end success function 
     }) //end ajax call 

私はちょうど$.ajax前alertboxを入れたときにアラートが正しく表示さので、私は、まさに「アヤックス」コールにエラーを見つけました。 しかし、私が成功関数にalertboxを置くと、何も表示されず、警告も表示されません。

これが唯一のオペラとSafariで起こる...

EDIT:FYI

:私は、PHPファイルにこのJavaScriptファイルを含める、と私はまた、PHPファイルにjquery.jsファイルが含まれています。これはすべて外部ファイルにあります。

EDIT:

/main.php /bin/jquery.js /bin/tip.js /bin/tip.php

私はmain.phpに上記のjsファイルが含まれ、そしてmain.phpのフォームアクションは

を/bin/tip.phpするように設定されているとAjaxのURLへのパスではなく

+0

ファンクバグとは何ですか? :) –

+0

私はFirebugであまりよくないです、どうすればいいですか?また、FF用のファイヤーバグではないので、どうすればOperaで何が間違っているのかを知ることができますか? –

+0

「ネット」タブでは、あなたのリクエストを回答とともに見つけることができます。 –

答えて

0

Operaはデバッグツールが組み込まれていmy_php_file.phpの/bin/tip.phpですDragonflyと呼ばれる。ツールメニュー - >詳細 - > Opera Dragonfly
ファイルメニューバーがない場合は、メニュー - >ページ - >デベロッパーツール - > Opera Dragonflyを開きます。

開いたらそれはあなたが作業しているページで)、Scriptsタブをクリックします(おそらく、ページを更新してそれを行うように頼むでしょう)。そして、あなたの外部のjsファイルにドロップダウンします。 コードを見つけたら、左側の行番号をクリックして$.ajax()行にブレークポイントを設定できます。さて、あなたのコードをトリガすると、そのJavaScriptの行を壊すことになります。検査タブ(下、中央)を使用して、すべての変数が正しく設定されていることを確認することができます。 JavaScriptをステップバイステップでデバッグすることもできます。

あなたがしたいと思う他の事はそうのような誤差関数を追加している:それはあなたが任意のより多くの情報を提供している場合

$.ajax({ 
    type: "POST", 
    url: "/my_php_file.php", 
    data: data_string, 
    success: function(data) { 
     $('#tip_loader').hide(); 
     if (data == 1) { alert('success'); } 
     else { alert('error'); } 
    }, //end success function 
    error: function(xhr, textStatus, errorThrown) { 
     alert(errorThrown); 
    } 
}); //end ajax call 

を参照してください。

また、@Mufasaが提案しているように、エラーコンソールを確認してください。それはDragonflyのError Consoleタブの下にあります。

+0

いいえ、私はerrorThrownメッセージを取得します: "ReferenceError:セキュリティ違反" ...任意のアイデア? –

+0

@Camran - これは通常、ドメイン間のリクエストに関連しています。上のコードはあなたが使っているものとまったく同じですか?また、エラーコンソールをチェックしましたか? –

+0

上記のコードはまさに私が使っているものです。また、エラーコンソールにはいくつかのCSSエラーが報告されていますが、私には条件付きコメントがあるので、それが原因かもしれません。しかし、css以外のものに関連するエラーはありません...これはPHPファイルの原因ですか? –

0

本当に伝える方法はありません。あなたはPHPファイルを投稿していません。出力を知らなければ、ブラウザがどのように応答するかを判断することはできません。

他のヒントもありますが、#1では、渡された値のいずれかにencodeURIComponentを使用していません。そのはるかに簡単なjQueryのはあなたのためにそれを行うために取得するには、

データの代わりに:{ESM:名前、ナム:電子メール、のmed:メッセージ、 "I_D":ad_id data_string、あなたは

データを持っている必要があります}

jQueryは、あなたのためのクエリ文字列を正しく作成します。

1

Operaでは、デフォルトでファイル許可のXMLHttpRequestはfalseです。そのため、設定を変更する必要があります。 Operaブラウザを開き、about:configと入力します。設定画面に移動します。 User Prefsフォルダに移動すると、Allow File XMLHttpRequestの設定が表示されます。それを確認し、次に保存します。それは動作するはずです。

関連する問題