【发布时间】:2016-03-02 19:39:47
【问题描述】:
当我想打印已从服务器接收的 jQuery AJAX 的输出时。它没有显示正确的字符集。我真正想要的是得到Š,而不是得到?。所有文件 script.js 和服务器 php proceed.php 都保存为 UTF-8 并设置为 UTF-8。数据库也设置为 UTF-8。我已经尝试了大部分事情。
在 AJAX 的 .js 文件中:
$.ajaxSetup({
url: "proceed.php", //file to procces data
ContentType : 'charset=UTF-8', // tried here
global: false,
type: "POST",
dataType: "html"
});
在.php 文件中:
mysql_query("SET NAMES utf8");
$output = utf8_decode($sql_result);
所有可能的组合。
更新:
我已经尝试了所有可能的变体中的所有建议方法,并且通过使用它们,我没有得到服务器的任何响应。我得到至少一些响应的唯一一次是上面提到的设置 - 从字面上看。设置 AJAX dataType: "text/html" 或 dataType: "application/html" 没有帮助。
代码: PHP
if(!empty($_POST['select_had'])){
$zem = $_POST['select_had'];
$vysledek = mysql_query("SELECT typ_hadanky, jazyk FROM hlavolam RIGHT JOIN hadanka ON hlavolam.id_hlavolamu=hadanka.id_hlavolamu WHERE zeme_puvodu='$zem'");
$out = "";
while ($zaznam = mysql_fetch_array($vysledek)) {
$zaz = $zaznam['jazyk'];
$out .= "<option>".$zaz."</option>";
}
$vys = utf8_decode($out);
echo $vys;
}
jQuery:
$("#sel_had_zem").change(function(){
var select_had = $("#sel_had_zem option:selected").text();
console.log(select_had);
$.ajax({
data:{'select_had':select_had},
success: function(data){
console.log(data);
$("#sel_had_jaz option").nextAll().remove();
$("#sel_had_jaz").append(data);
},
error: function(){
alert('No server response');
}
});
});
【问题讨论】:
-
尝试
contentType: 'charset=utf-8'并执行'dataType application/html' -
我可能是错的,但我相信您的数据:是错误的。需要
data:{"select_had":"select_had"},您只有一个单引号围绕键,但没有引号围绕值? @克鲁尔曼 -
这不是问题
-
你的 ajax jquery 中没有 type: "POST"
-
$.ajaxSetup({});将其设置为任何 jQuery.ajax 的默认值