Ajaxパラメータ値が中国語の場合のIEブラウザとFFブラウザの違いの分析例

亚连
リリース: 2018-05-24 13:52:25
オリジナル
1349 人が閲覧しました

この記事では、Ajax 送信パラメータ値が中国語の場合の IE ブラウザと FF ブラウザの違いを主に紹介し、分析例を組み合わせて、Ajax パラメータ送信プロセスにおけるパラメータのトランスコーディングに関する注意事項と使用スキルを説明します。ご参考までに

この記事の例は、Ajax に渡されたパラメータ値が中国語の場合の IE ブラウザと FF ブラウザの違いを示しています。参考までに共有します。詳細は次のとおりです。

以前「AJAX コールバック関数に基づく JavaScript のパラメータ受け渡し」を紹介しました。ここでは主に、AJAX が中国語のパラメータを渡す際の、ブラウザごとの文字化け処理方法を分析します。 。

Ajax が中国語でパラメータを渡すと文字化けが発生する:

1. データベース接続のエンコード形式は GB2312、latin1_swedish_ci

2.php ファイルのエンコード形式は UTF-8 であり、ブラウザではエンコードが次のように表示されます。 : UTF-8

3. 私のページは 2 つの方法で表示されます:

1) ページの読み込み時に自動的に読み込み、毎秒更新します

2) 拡張機能グループ名をクリックすると、拡張グループ 対応するメンバー カード情報

4. 最初のケース処理:

control.php ページで session:

を取得し、データベースの内容を読み取ります:

line 53:

$grouparr[] = iconv("GB2312","UTF-8",$g[0]); //数据库内容转换为 UTF-8,这样能正常显示页面上的中文
ログイン後にコピー

line106:

$_SESSION['dispatchgroup'] = iconv("UTF-8","GB2312",$grouparr[0]);//将转换的中文修改为 GB2312,用于在 dispatchinfo.php 文件中获得查询的条件值,获得GB2312编码的值。
ログイン後にコピー

dispatchinfo.php:291行目

if($_SESSION['dispatchgroup']){
  $groupaddressinfo = function_listaddressesbygroup($_SESSION['dispatchgroup'],1,$value,0,$_SESSION['dispatchexten'],$_SESSION['dispatchgrouppage']);  
  //2013-5-17$groupaddressinfo = "listaddressesbygrouptype|0|LocalExt|1|12|1,,,801,空闲,,|1,,,802,不在线,,|1,,,803,空闲,,|1,,,804,不在线,,|,,,805,不在线,,|,,,806,不在线,,|,,,807,不在线,,|,,,808,不在线,,|,,,809,不在线,,|,,,810,不在线,,|5,餐厅,,811,10.1.6.189;连接|6,,,812,user2;断开|";
}
ログイン後にコピー

この場合、IEでもFFでも正常に表示できます。

5. 2 番目のケースの場合:

[拡張機能グループ] 名をクリックすると、クリックされた拡張機能グループの中国語名が取得され、変更前の中国語名が Ajax を介して処理されるよう、dispatchinfo2.php ファイルに渡されます。 jsのクリックイベント後に取得される名前とアラートはどちらも正常な値です[形式はUTF-8] このとき、データベース内の内容はGB2312です。このとき、iconvトランスコード中にエラーが発生します。

最初の場合のみ、

$groupname = iconv("GB2312","UTF-8",$groupname);
ログイン後にコピー

の処理時に変換エンコード方式を使用しているため、この時、再度エンコードする際にエラーが発生しますので、

解決策:

JS非同期投稿処理:

checkval(); 
var ajax = InitAjax();
var url = "dispatchinfo2.php?"+arges;
//2013-08-21 limx 中文编码问题
url = encodeURI(encodeURI(url));
ajax.open('GET',url,true);
ログイン後にコピー

dispatchinfo2。 php

$groupname = urldecode($groupname);
$groupname = iconv("utf-8","GB2312",$groupname);
ログイン後にコピー

4 行のコードで中国語エンコーディングの問題を完全に解決します。

AJAXによって送信されるデータはUTF-8エンコードで送信されるため、サーバー側でエンコード変換を実行する必要があります(ここでの私のページはGB2312でエンコードされています。UTF-8が使用されている場合、この手順は必要ありません) )問題)なので、サーバー側でUTF-8をGB2312に変換しました

上記は皆さんのためにまとめたものです、将来皆さんのお役に立てれば幸いです。

関連記事:

Ajax非同期データ戻り値送信 行折り返し問題事例分析

SSHオンラインモールをajaxでユーザー名非同期検証を完了

ajaxリクエストで返されるデータの順序 問題分析

以上がAjaxパラメータ値が中国語の場合のIEブラウザとFFブラウザの違いの分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!