2
回答
php ajax json返回数据的格式
华为云实践训练营,热门技术免费实践!>>>   
大神们,我想问下ajax 的回调函数的数据格式是怎么样的,如果数据格式中有message值,还有code值,最后是data值,我想问下,这三个值要怎么合理使用,我对这块还是很疑惑的,请各位大神指点下小的,感激不尽
<无标签>
举报
学想有成
发帖于2年前 2回/684阅
共有2个答案 最后回答: 2年前
data.php:
<?php
//数组自行封装,包含你说的code,message,data
$arr = array();
//下面这两句把PHP数组转成JSON对象
header('Content-Type: application/json; charset=utf-8');
echo json_encode($arr);

index.html:
<script>
$.ajax({
    async: true,
    type: 'GET',
    url: 'data.php',
    data: '',
    success: function(data) {
        console.log(data); //data是个JSON对象,可以data.code调用.
    }
});
</script>

下面是一个PJAX(HTML5 pushState+AJAX)无刷新加载页面的实例:
index.php:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Index</title>
<script src="jquery.js"></script>
</head>
<body>
<div id="main">
    <a href="data.php">data.php</a>
    <script>
    $(document).ready(function() {
        $('#main').on('click','a',function(e) {
            if(window.history.pushState) {
                e.preventDefault(); //不跟随原链接跳转
                url = $(this).attr('href');
                $.ajax({
                    async: true,
                    type: 'GET',
                    url: 'data.php',
                    data: 'pjax=1',
                    success: function(data) {
                        window.history.pushState(null, null, url); //改变URL和添加返回历史
                        document.title = data.title; //设置标题
                        $('#main').html(data.main); //这里并不会因为Unicode字符\u003c和\u003e而发生XSS
                        //$('#main').html('\u003cimg src=1 onerror=alert(/xss/)\u003e'); //直接赋值字符串则会发生XSS
                    }
                });
            } else {
                return; //低版本IE8等不支持HTML5 pushState,直接返回进行链接跳转
            }
        });
    });
    </script>
</div>
</body>
</html>

data.php:
<?php
if(isset($_GET['pjax'])) {
    //PJAX请求返回JSON
    $arr['title'] = 'Data';
    $arr['main'] = '\u003cimg src=1 onerror=alert(/xss/)\u003e';
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($arr);
} else {
    //常规请求返回HTML
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Data</title>
<script src="jquery.js"></script>
</head>
<body>
<div id="main">\u003cimg src=1 onerror=alert(/xss/)\u003e</div>
</body>
</html>
<?php } ?>

顶部