2011-07-05 3 views
0

Google Chromeの「SyntaxError:予期しないトークンILLEGAL」とIE9の「終了文字列定数」(どちらもParserErrorsとして報告されています) jQueryを通じてajaxリクエストの結果を受け取ります。この関数はFirefoxで正常に動作します。 WebkitのdevのツールからChromeのWCF Webサービスの結果:予期しないトークンが不正 - ParserError(Chrome/IE9/Firefox以外)

結果は次のとおりです。

"{"LoginResult":{"ErrorMessage":null,"Succeeded":true,"SuccessMessage":null,"AuthToken":"504F4DB7C9C5599AFDE10BBE6B147338042378C5AA2B6F6FE832C29914AD8011161917D496FA037807CCF70D9324B57C56D13C666105DDF7A9A4D3E4D3B20186008D423A31CC4D752DB281A723C726BFADBAA1EDA0F1B878EA9A23DD14A21168CFC5F01122479AA4C95917C477655B005E5094E200839E64F6EAF7D56845D30C08728E8E9BE1F4B503B919A88CF98321F77109D0AFC8DFD347A01BFCEBE728D31F1F1F6AFE2A4DF5675E6D03C29638CEF027DEC52D5"

結果IE9のIEのdevのツールからです:

"{\"LoginResult\":{\"ErrorMessage\":null,\"Succeeded\":true,\"SuccessMessage\":null,\"AuthToken\":\"AB0FB8336925444BC679E757A8237BDBE9B379C2BE0CD81502CDAE53F78BCE6896D33A54AD8C436E6C6E61C99C631A7363EFAB260A82256508D4A5D0C5891A3F6C124577F743E802CDF3E6E3A182E4614E2670DA010731CCEE115C9DED6C73138F7D97CB8E1E77DE572026D230D1DEE4C481A69C6E22C934CC0D855E3A2E7221CF666C6682E329B82B872751F5F297126BBA545D3027271681C9AA63073E4A018A04AD8A7EEC6E065F0074AF7FE343F190A65E2FCA"

結果FirefoxでFirebugのからです。

"{\"LoginResult\":{\"ErrorMessage\":null,\"Succeeded\":true,\"SuccessMessage\":null,\"AuthToken\":\"B278D66AD2CCF3CC40DE4AB16D75ED691E1B63F7E93D89E351CF3AA518D4D85D5212753EB26D3CDB22BF70F6369E8CB42B9BDE8079B8B60C42BD3BE3C9FF3670892C8049B64ABB47ED4117FAED8C5F36B35C99241398232B9F5EF4AC8702F2A3984B3FE0E3E5CF5A642C7A2140EFE249EC15755D5971C49EE5F863A0C8EBE10E2973532843656A4C6A89B3E4333F55B7180C2614C92BB28E18611FAE6894DF835AF965E82F762B67B7030559B4CBE6C9DCAD38B1667D347EE44CDED5207ABF5967D947FEE1DAC788F656ACBE395444F4418979A906DA2788C02666BCB1002EE3\"}}"

この特定のリクエストでは、jquery ajax呼び出しのresponseTextは、ChromeとIEのauthTokenのその時点で切り捨てられているように見えますが、なぜかすべてがちょうど16進文字であるためわかりません。

この機能はサーバー側で機能します。クライアント側に問題が発生すると、その結果が表示されます。

リクエストを作成するためにパラメータを渡す共通のAjaxリクエスト関数を使用します。

これらは重要なパラメータです。

  • 非同期:真
  • 方法:
  • データを "GET":{}
  • のserviceURL: "ServiceName.svc /ログインユーザ名= user.name &パスワード= DEV &リメンバー・ミー= falseの?"

次は私のAJAX呼び出しコードです:

$.ajax({ 
    async: async, 
    cache: false, // don't cache results 
    type: method, 
    url: Lib.Services.baseUrl + serviceUrl, 
    contentType: "application/json; charset=utf-8", 
    data: data, 
    dataType: "json", 
    processData: false, // data processing is done by ourselves beforehand 
    success: function (data, statusText, request) { 

     if (data !== null && data !== {}) { 
      if (data.d && data.d.__type) { 
       data = data.d; 
      } 
      else { 

       var keys = []; 
       for (key in data) { 
        if (data.hasOwnProperty(key)) { 
         keys.push(key); 
        } 
       } 
       if (keys.length !== 1) { 

       } 
       else { 
        // Wrapped message: return first property 
        $.each(data, function (name, value) { 
         data = value; 
         return false; 
        }); 
       } 

      } 
     } 

     if (data === null) { 
      window.location = "/login"; 
     } 
     else { 
      successHandler(data, statusText, request); 
     } 

    }, 
    error: function (request, statusText, error) { 
     var res = request.responseText; 

     if (request.status !== 200) { 
      if (!request.isResolved()) { 
       if (request.status === 0 && Lib.debug) { 
        Lib.ShowError("Debug: Check solution is running"); 
       } 
       else { 
        Lib.ShowError(request.status + " " + error); 
       } 
      } 
      else { 
       Lib.ShowError("Request could not be resolved."); 
      } 
     } 
     else { 
      Lib.ShowError("Unknown error status."); 
     } 

     if (typeof (errorHandler) === "function") { 
      errorHandler(); 
     } 

    } 
}); 

この呼び出しを実行すると、「不明なエラーステータス」というメッセージが表示されます。

私はこのメッセージに関する多くの投稿を検索して閲覧しましたが、問題は一般的に結果ではなくリクエストにあるようです。

これを引き起こしている可能性のある手がかりはありますか?私のすべてのWebサービスリクエスト(たとえば、Chromeでは、私のサービスの別のは"{"GetStatusDat"です)

このメソッドレスポンスは、要求と応答タイプがJsonの典型的なWrapped WCFレスポンスです。

ブラウザ:Firefox 5.0 | Chrome 12.0.742.112 | IE9 9.0.8112.16421:バージョン9.0.1を更新する

答えて

1

問題が何かを発見しました。

WebでTelerikからRadCompressionModuleを有効にしていたことを思い出しました。設定:

<httpModules> 
    <add name="RadCompression" type="Telerik.Web.UI.RadCompression" /> 
</httpModules> 

これは(すなわち、圧縮)でのみFirefoxを扱うことができる方法で、任意のWebサービス呼び出しのJSONリターンを妨げているようです。不思議なことに、Internet Explorer 6でも問題はありませんでしたが、IE6では圧縮モジュールが無効になっているような気がします。

2人で一緒に仕事をするためのアイデアがあれば、大変感謝しています。

関連する問題