遇到JSON.parse意外字符错误

时间:2014-01-06 11:18:10

标签: jquery .post

我尝试使用JQuery post方法获取JSON值。 我编写了以下代码,用于使用来自http://code.google.com/p/aspjson/

aspjson util生成JSON数据
<!--#include file="JSON_2.0.4.asp"-->
<!--#include file="JSON_UTIL_0.1.1.asp"-->
<%
    Dim member
    Set member = jsObject()

    member("color1") = "Green"
    member("color2") = "Yellow"
    member("color3") = "Blue"

    member.Flush
%>

此代码生成jQuery数据;

{"color1":"green","color2":"red","color3":"blue"}

最后我的JQuery请求和响应代码在这里:

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
            <script> 
            jQuery(document).ready(function($) {    
            var formData = "A-1";

            $.ajax({
            method: "post",
            url: "return_json.asp",
            dataType: "json",
            data: formData,
            success: function (response) {
            var data = JSON.parse(response);
            $('#myJson').html('<table style="color:red"><tr><td>' + data.color1 + '</td><td>' + data.color2 + '</td></tr></table>');},
            error: function(){
            alert('Error Here...');}
        });
    });
    </script>
    <div id="myJson"></div>

当我刷新页面时,我收到此错误:

SyntaxError: JSON.parse: unexpected character
var data = JSON.parse(response);

可能是什么问题?

3 个答案:

答案 0 :(得分:1)

使用此,

    $('#myJson').html('<table style="color:red"><tr><td>' + response.color1 + '</td><td>' + response.color2 + '</td></tr></table>');

删除以下行:不需要再次解析json。

 var data = JSON.parse(response);

答案 1 :(得分:0)

$.ajax将为您解析传入的JSON,因此成功回调中的response变量在收到时已经被解析为JS对象。

jQuery.ajax的文档中使用“json”作为数据类型:

  

将响应计算为JSON并返回JavaScript对象。该   JSON数据以严格的方式解析;任何格式错误的JSON都会被拒绝   并抛出一个解析错误。从jQuery 1.9开始,空响应就是   也拒绝了;服务器应返回null或{}的响应   代替。

删除JSON.parse并直接从您的回复变量中读取数据,您应该都很好。

success: function (response) {
   $('#myJson').html('<table style="color:red"><tr><td>' + response.color1 + '</td><td>' + response.color2 + '</td></tr></table>');
}

答案 2 :(得分:0)

您收到的成功响应数据已经是JSON。删除JSON.parse

$.ajax({
            method: "post",
            url: "return_json.asp",
            dataType: "json",
            data: formData,
            success: function (response) {
            $('#myJson').html('<table style="color:red"><tr><td>' + response.color1 + '</td><td>' + response.color2 + '</td></tr></table>');},
            error: function(){
            alert('Error Here...');}