2011-03-29 24 views
0

こんにちは、私はマスターページを使用FirefoxとChromeでjQueryコードが動作しないのはなぜですか?

を編集しました。私は自分のプロジェクトでformsauthenticationを使用します。 SQL Server 2005からデータを取得します。その後、login.aspxでは、jQueryからpagemethodを呼び出します。結局、IE9.0、Chrome、Firefoxでプロジェクトを実行します。プロジェクトは正しいです。しかし、このjQueryコードはIE9.0だけで動作しています。 LoginServiceという名前

マイpagemethod、LoginServiceのリターンが「0」の成功でないならば、私はこのTAHを制御する、「ユーザー/ Default.aspxの」のように「0」かにreturnurlを返すには、以下を実行します:

alert("there isnt error: " + msg.d); 

しかし、エラーがある場合、これが実行されます:

alert("there is error: " + msg.d); 

私はIE9でこのプロジェクトを実行する場合ERROがイマイチ」のように、メッセージが表示

ことは非常に興味深いですR:ユーザー/ Default.aspxの」

しかし、

私はクロームやFirefoxでこのプロジェクトを実行した場合と同様に、メッセージが示す 『エラーがある:undefinedは』

どのように私はすべてにこのプロジェクトを実行することができますブラウザ?

だけで簡単に観察
<script type="text/javascript"> 
    jQuery(document).ready(function() { 
    jQuery("#myContent_login").focus(); 
    jQuery("#myContent_submit_image").click(function() { 
     jQuery("#login_form_spinner").show(); 
     jQuery.ajax({ 
     type: "POST", 
     url: "Logon.aspx/LoginService", 
     data: "{'username': '" + jQuery("#myContent_login").val() + "', 'password': '" + jQuery("#myContent_password").val() + "','isRemember': '" + jQuery("#myContent_remember_me").is(':checked') + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      if (msg.d != 0) { 
      alert("there isnt error: " + msg.d); 
      } 
     }, 
     error: function (msg) { 
      alert("have error: " + msg.d); 
     } 
     }); 
    }); 
    }); 
</script> 
+0

あなたが言うとき"エラーがあります:未定義" - "エラーがありません:未定義"または "エラーがあります:未定義"を意味しますか?ここに「エラーがあります」という正確なメッセージを表示するコードはありません。どのケースが間違っているのかわかりません。 – Benj

答えて

0

デフォルトの提出キャンセルするためにあなたのクリックハンドラからfalseを返すことを確認してください:

また
jQuery("#myContent_submit_image").click(function() { 

    jQuery('#login_form_spinner').show(); 
    jQuery.ajax({ 
     type: "POST", 
     url: "Logon.aspx/LoginService", 
     data: "{'username': '" + jQuery("#myContent_login").val() + "', 'password': '" + jQuery("#myContent_password").val() + "','isRemember': '" + jQuery("#myContent_remember_me").is(':checked') + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      if (msg.d != 0) { 
       window.location.replace(msg.d); 
      } 
     }, 
     error: function (msg) { 
      alert(msg.d); 
     } 
    }); 

    return false; // THIS IS VERY IMPORTANT 
}); 

このように、適切にパラメータをエンコードするために、あなたのAJAX呼び出しのクリーンアップ:

jQuery("#myContent_submit_image").click(function() { 
    jQuery('#login_form_spinner').show(); 
    jQuery.ajax({ 
     type: "POST", 
     url: "Logon.aspx/LoginService", 
     data: JSON.stringify({ 
      username: jQuery("#myContent_login").val(), 
      password: jQuery("#myContent_password").val(), 
      isRemember: jQuery("#myContent_remember_me").is(':checked') 
     }), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      if (msg.d != 0) { 
       window.location.replace(msg.d); 
      } 
     }, 
     error: function (msg) { 
      alert(msg.d); 
     } 
    }); 

    return false; // THIS IS VERY IMPORTANT 
}); 
+0

@ダリン・ディミトロフに感謝します。ベリープロの答え:) –

1

:あなたはlogin_form_spinnerの前で#または.が必要

のjQuery( 'login_form_spinner')

更新:

あなたは、たとえばhereを見ることができます。成功とエラーの機能はあなたの例とは異なることに注意してください。

私はさらに助けますが、具体的なエラーを知る必要があります。

+0

あなたの詳細を編集しましたが、それはfirefoxとchromeで動作しません。しかし、それは正常に動作しています –

0

ジャスティンが欠落しているが、持っているか、ドットもあなたのデータに怒っ変更が

<script type="text/javascript"> 
jQuery(document).ready(function ($) { 
    $("#myContent_login").focus(); 
    $("#myContent_submit_image").click(function() { 
     $('#login_form_spinner').show(); 
     $.ajax({ 
      type: "POST", 
      url: "Logon.aspx/LoginService", 
      data: { 
       "username":$("#myContent_login").val(), 
       "password":$("#myContent_password").val(), 
       "isRemember":$("#myContent_remember_me").is(':checked') 
      }, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       if (msg.d != 0) { 
       alert("there isnt error: " + msg.d); 
       } 
      }, 
      error: function (msg) { 
       alert("have error: " + msg.d); 
      } 
     }); 
    }); 
}); 
</script> 

オブジェクトが、私はあなたがjQueryのためのマニュアルを参照してくださいその

+0

あなたが戻ってきた状態、つまり302 404 – mcgrailm

+0

が返されても何の問題もありません。私はそれを書いています、ie9のwverythingは良いですが、firefoxとchromeです。私はjQueryを$の代わりに使用しています。コンフリクト()はhttp://stackoverflow.com/questions/5456750/i-have-a-jquery-problem-when-using-noconflict –

+0

のようにします。 jQueryを一日中言っておく必要はありません。もしあなたが気付いたら、私はhttp://api.jquery.com/jQuery.noConflict/をチェックアウトします。 – mcgrailm

0

のようなJSONヘッダか何かを返さないと思われるどこに言ったように。慎重ajax、あなたはわかりますそのsuccesserror使用異なる引数:

success(data, textStatus, jqXHR) 
error(jqXHR, textStatus, errorThrown) 

だからあなたのエラーハンドラは次のようになります。

error: function (jqXHR, status, error) { 
    alert("have error: " + status); 
} 

あなたは成功し、エラーメッセージを取得しているたら、エラーの原因を突き止めることができます。この行で

+0

良い点@Benj – mcgrailm

0

jQuery('login_form_spinner').show(); 

は、それが記事にしたり、元のコードのタイプミスですか? あなたのセレクタに "#"が足りないと仮定しています。 IEはFFやChromeとは違ってこの種のエラーを処理するのでブラウザー間で違った振る舞いをします。

+0

あなたが望むなら、私は私のプロジェクトを送ることができます。あなたは私に会うことができます –

+0

確かに、あなたのプロジェクトを私にメールしてください。 [email protected] –

関連する問題