AJAX、IE、およびCP1251

ここで何らかの形でajaxで何かを行い、データをJSON転送しcp1251 。サイト上のすべてのエンコーディングはcp1251です。 車輪を再発明しないために、 jQuery使用しました。
IEすべてをテストすることを決定するまで、すべてが正常に機能しました。 IE私は7番目のバージョンを持っています、私はまだ他でそれをテストしていませんが、私の意見では同じ機能があります。
したがって、エラーなしで機能するものはありません(目に見える)。 駆け巡り、 jQueryparsererror返すことがparsererror 。 さらに詳しく調べてみると、 responseXMLフィールドにアクセスするとトランスポートがアクセスに失敗し、 responseTextフィールドに空のドキュメントが含まれていることがわかりました(当然、データはテキストで送信されます)。
ジグソーパズルとグーグルで約30分働いた後、私はそれを見つけました:
  1. ヘッダーのエンコードがutf-8ない場合、 IE絶対に動作しません。
    コンテンツタイプapplication/ajaxおよびapplication/x-javascriptも制御されません。

    一般的に、最終的に、ヘッダーContent-type: text/plain; charset=utf-8を生成し始めましたContent-type: text/plain; charset=utf-8 Content-type: text/plain; charset=utf-8およびすべてをutf-8トランスコードします( iconvで3行で出力されます)。
    いいえ、 IE確かに同じcp1251エンコーディングの友人でIEないことを読んでいますが、今のところ私はそれを理解しました;)
    みんな! 他人の間違いを繰り返さないでください:)

    UPD


    うーん、私の頭に灰を振りかけます。 cp1251エンコーディングをwindows-1251置き換えることで、すべてが非常によく修正されていることが判明しました:)ヒントをありがとう。


Source: https://habr.com/ru/post/J29265/


All Articles