2012-12-06 35 views
0

我使用這個代碼從一個PHP頁面html內容:jQuery的Ajax和字符編碼

$.ajax({ 
    url:server+'/getMessage/40', 
    cache: false, 
    success: function(res) { 
     var text = res.responseText; 
     $('#result').html(res); 
    } 
}); 

的文字是從數據庫中檢索。

php文件看起來是這樣的:

$app->get('/app/get/getMessage/:Id',function ($Id='') use ($app) { 
$msgElements = 'Title,Body'; 
$msgFe = $conn->query("SELECT $msgElements FROM messages WHERE Id='".$Id."'"); 
    $fields = explode(',',$msgElements); 
    while($msgData = $conn->extract($msgFe)){ 
     foreach($fields as $field) { 
      $arr->$field = $msgData->$field; 
     } 
    } 
    $ele=' <div class="modal-header"> 
       <h1>'.$arr->Title.'</hi> 
      </div> 
      <div class="modal-body"> 
       '.$arr->Body.' 
      </div> 
      <div class="modal-footer"> 
      </div> 
      '; 
    echo $ele; 
}); 

如果我把瀏覽器中的PHP頁面的位置,用適當的GET指示,我得到沒有任何問題的文本。但是,如果我檢索具有上述ajax函數的文本,它顯示? s ...

從我的測試(和其他線程在這裏)我假設問題依賴ajax函數中的某個地方..任何幫助?

PS我注意到,如果我嘗試使用json_encode()包含字符的文字不能正確顯示,結果是null。我希望我幫助!

+0

您是否嘗試在php的開頭添加標題(「charset = utf-8」)? –

+0

您的AJAX響應的響應頭可能需要反映數據庫中的內容。 –

+0

@Jack,我該怎麼做? – ghego1

回答

0

您必須utf8_encode()您的數據庫值,因爲結果值不是utf8編碼,如您所說。

+0

我試過了,但它沒有解決問題...(所以我已經從代碼中刪除它) – ghego1

+0

你確定你的頁面是utf8編碼,你有一個元字符集將字符集設置爲utf8? –

+0

在js應該放置html文檔的'head'中,我有'',所以我猜是的,但我不太確定... – ghego1