2013-04-12 21 views
0

我遇到了通過AJAX和jQuery顯示重音字符的問題。我會更詳細地解釋它。JavaScript,jQuery,AJAX和重音字符:如何讓它們工作?

我有一個頁面,它有一個input字段。當我填寫4個字符(必須是ICAO機場代碼)字段時,它會通過AJAX調用PHP腳本。該腳本如下:

文件:ajax.airport.php

<?php 
    include("mysqlexec.inc.php"); 
    include("functions.inc.php"); 

    if(isset($_GET['icao'])){ 
     $airportData = GetAirportInfo($_GET['icao']); 

     if (!empty($airportData["Name"])) { 
      echo $airportData["Name"]; 
     } else { 
      echo "Not found!"; 
     } 
    } 
?> 

功能GetAirportInfo();使一個HTTP請求到Our Airports網站,其中顯示機場的名字。如果你可以檢查this example page,你可能會注意到,ICAO代碼爲SBGL,這是通過在input用戶和GetAirportInfo();功能(這是一個數組的元素)的迴歸進入將距離Galeão - AntônioCarlos Jobim Intl,帶有一些重音字符。

問題是,當在文件上回顯此問題時,出現Gale o - Ant nioCarlos Jobim Intl而不是。

所有文件都是UTF-8(不含BOM)。我嘗試了幾個函數(PHP和JS類型),但是這被證明是不成功的。

輸入執行的jQuery函數是這樣的:

function showAirport(icao, dest) { 
    var icao=icao.toUpperCase(); 

    if (icao.length < 4) { 
     $("#"+dest).html(""); 
    } else { 
     $("#"+dest).html('<img src="images/loadingsm.gif"/>'); 
     $.ajax({ 
      type : "GET", 
      url  : "ajax.airport.php", 
      dataType: "html", 
      data : { icao: icao }, 
      success : function (result) { 
       $("#"+dest).html(result); 
      }, 
     }); 
    } 
}; 

任何幫助是值得歡迎的。

+0

數據庫怎麼樣?記錄編碼是否正確?順便說一下,在示例頁面,編碼似乎對我來說是正確的(mac os,chrome) – tanaydin

+0

實際上,這些數據沒有被記錄在任何數據庫中。意圖僅供用戶交叉檢查,並意識到他輸入了正確的國際民航組織代碼。 - 示例頁面不是我的,它來自我的機場網站,我從那裏獲取信息。我們的機場不是由我維護的:它只是從我提取數據的地方獲得他們的許可。 –

+1

你試過了嗎[mb_detect_encoding](http://php.net/mb_detect_encoding)?或者你可以嘗試像 echo utf8_encode($ airportData [「Name」]); – tanaydin

回答

0

有檢查的contentType屬性

function showAirport(icao, dest) { 
var icao=icao.toUpperCase(); 

if (icao.length < 4) { 
    $("#"+dest).html(""); 
} else { 
    $("#"+dest).html('<img src="images/loadingsm.gif"/>'); 
    $.ajax({ 
     type : "GET", 
     contentType: "text/xml;charset=utf-8", 
     url  : "ajax.airport.php", 
     dataType: "html", 
     data : { icao: icao }, 
     success : function (result) { 
      $("#"+dest).html(result); 
     }, 
    }); 
} 

};

+0

'contentType'上的字符集已經是[根據jQuery的API](http://api.jquery.com/jQuery.ajax/)的默認值。 –

0

我想你應該編碼$airportData["Name"]之前它在ajax.airport.php回聲,使用json_encode()之前的數據回聲ajax。一些其他語言需要編碼,瀏覽器可以識別

include("mysqlexec.inc.php"); 
include("functions.inc.php"); 

if(isset($_GET['icao'])){ 
    $airportData = GetAirportInfo($_GET['icao']); 

    if (!empty($airportData["Name"])) { 
     echo json_encode($airportData["Name"]); 
    } else { 
     echo "Not found!"; 
    } 
} 
+0

我的請求不是JSON解碼,而是純HTML格式。 –

相關問題