ajax具有异步刷新的功能,所用web页面需要ajax进行数据交互,故而先在thinkphp测试了一下ajax数据传输。
thinkphp后台:利用ajaxReturn返回数据
<?php
namespace Home\Controller;
use Think\Controller;
use Think\Model;
header('charset=utf-8');
class UserController extends Controller {
public function index(){
$this->display();
}
public function ajax(){
//ajax传值测试
$test="ajax传值测试";
$this->ajaxReturn($test);
}
?>
前端js解析:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ajax测试</title>
<script type="text/javascript" charset="UTF-8">
function show(){
var ajax=new XMLHttpRequest();
ajax.open('GET','{:U("ajax")}',true);
ajax.setRequestHeader("Content-Type","text/html;charset=utf-8");
ajax.send();
ajax.onreadystatechange=function(){
if(ajax.readyState==4 &&ajax.status==200 ){
var str = eval("'" + ajax.responseText + "'");//将ajax返回的json数据转换为中文显示
document.getElementById('div').innerHTML=str;
}
}
}
</script>
</head>
<body>
<div id="div"></div>
<button οnclick="show()">AJAX</button>
</body>
</html>
在返回的json数据的显示上面,由于对json完全不知道,走了很多弯路,刚开始只能显示出一串unicode编码 这类\u5bf9\u4e0d
后来搜索“将json格式数据显示为中文”找到了方法:
例如有这样的数据:
var str = "\\u6211\\u662Funicode\\u7F16\\u7801";
1. eval解析或new Function("'+ str +'")()
str = eval("'" + str + "'"); // "我是unicode编码"2. unescape 解析
str = unescape(str.replace(/\u/g, "%u")); // "我是unicode编码"