首页 > jquery下的ajax问题

jquery下的ajax问题

  在jquery下用$.ajax下的$.parseJSON方法会报这样的错Uncaught SyntaxError: Unexpected token o
  而改用原生的写法再去用$.parseJSON方法却不会这是什么回事
  ////////jquery下的///////
    $(function() {
                $.ajax({
                    type: "get",
                    url: "index.php",
                    cache: false,
                    dataType: "json",
                    success: function(data) {
                        var data = $.parseJSON(data);
                        var html = '';
                        for (var i = 0; i < data.length; i++) {
                            html += '<li><a href="">' + data[i].title + '</a> [<span>' + data[i].date + '</span>]</li>';
                        }
                        document.getElementById("thelist").innerHTML = html;
                    },
                    error: function() {
                        alert("出错");
                    }
                });
            });


  ////////原生下的///////
function ajax(method, url, data, success) {
                var xhr = null;
                try {
                    xhr = new XMLHttpRequest();
                } catch (e) {
                    xhr = new ActiveXObject('Microsoft.XMLHTTP');
                }
                if (method == 'get' && data) {
                    url += '?' + data;
                }
                xhr.open(method, url, true);
                if (method == 'get') {
                    xhr.send();
                } else {
                    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
                    xhr.send(data);
                }
                xhr.onreadystatechange = function() {
                    if (xhr.readyState == 4) {
                        if (xhr.status == 200) {
                            success && success(xhr.responseText);
                        } else {
                            alert('出错了,Err:' + xhr.status);
                        }
                    }
                }
            }
            ajax('get', 'index.php', '', function(data) {
                var data = $.parseJSON(data);

                var html = '';
                for (var i = 0; i < data.length; i++) {
                    html += '<li><a href="">' + data[i].title + '</a> [<span>' + data[i].date + '</span>]</li>';
                }
                document.getElementById("thelist").innerHTML = html;
            });
  

因为在你指定了 dataType:"json" 之后, 它自动就会转成对象, 所以你拿对象再 $.parseJSON一次, 肯定是要出错的...
删除你代码里的 var data = $.parseJSON(data); 即可.

<script type="text/javascript">
$.ajax({
    type: "get",
    url: "123.php",
    cache: false,
    dataType: "json",
    success: function(data) {
        console.log(typeof data, data, data.hello);
    }
});
</script>

123.php

<?php
$result = array('hello'=>'你好');
echo json_encode($result);

【热门文章】
【热门文章】