我遇到了通过ajax加载的json编码信息的问题。
PHP代码(test.php):
<?php
$val1 = 'Productmanager m / f';
$val2 = 'test';
$arr = array('first' => $val1, 'second' => $val2);
echo json_encode($arr);
?>
html文件中的JavaScript代码:
$(document).ready(function() {
$.post("test.php", function(data){
var response = $.parseJSON(data);
console.log(response.first);
console.log(response.second);
}
});
控制台中的结果如下:
Productmanager m / f
和
test
这两个文件都是UTF-8编码。
我真的不知道为什么以及如何将其转换回可读字符串。 您可能知道如何发生这种情况?
我一开始没有找到合适的解决方案,只是搜索和替换方法。
答案 0 :(得分:3)
添加正确的PHP标头并解码字符串:
<?php
header("Content-type: application/json");
$val1 = "Productmanager m / f";
$val2 = "test";
$arr = array("first" => $val1, "second" => $val2);
echo json_encode($arr);
?>
<script>
$(document).ready(function() {
$.post("test.php", function(data){
var response = $.parseJSON(data);
console.log(htmlDecode(response.first));
console.log(response.second);
}
});
function htmlEncode(value){
return $('<div/>').text(value).html();
}
function htmlDecode(value){
return $('<div/>').html(value).text();
}
</script>
答案 1 :(得分:0)
你能试试吗?
$(document).ready(function() {
$.ajax({
type: "POST",
url: "test.php",
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
dataType: 'json',
success: function(data) {
var response = $.parseJSON(data);
console.log(response.first);
console.log(response.second);
}
});
});
您可以使用“contentType”
为ajax请求设置字符编码在你的php方面,你的代码必须像;
<?php
$val1 = 'Productmanager m / f';
$val2 = 'test';
$arr = array('first' => $val1, 'second' => $val2);
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>
重要提示:JSON_UNESCAPED_UNICODE适用于php 5.4.0 !!
答案 2 :(得分:0)
您可以针对test.php
<?php
$val1 = 'Productmanager m / f';
$val2 = 'test';
$arr = array('first' => $val1, 'second' => $val2);
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>