首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遇到JSON.parse意外字符错误

问遇到JSON.parse意外字符错误
EN

Stack Overflow用户
提问于 2014-01-06 11:18:10
回答 3查看 4.1K关注 0票数 0

我尝试使用JQuery post方法获取JSON值。Im编写以下代码,使用aspjson util从http://code.google.com/p/aspjson/生成JSON数据

代码语言:javascript
复制
<!--#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数据;

代码语言:javascript
复制
{"color1":"green","color2":"red","color3":"blue"}

最后,我的JQuery请求和响应代码如下:

代码语言:javascript
复制
<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>

当我刷新页面时,会得到以下错误:

代码语言:javascript
复制
SyntaxError: JSON.parse: unexpected character
var data = JSON.parse(response);

有什么问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-06 11:26:45

用这个,

代码语言:javascript
复制
    $('#myJson').html('<table style="color:red"><tr><td>' + response.color1 + '</td><td>' + response.color2 + '</td></tr></table>');

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

代码语言:javascript
复制
 var data = JSON.parse(response);
票数 1
EN

Stack Overflow用户

发布于 2014-01-06 11:21:57

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

当使用"json“作为数据类型时,jQuery.ajax的文档:

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

删除JSON.parse并直接从您的响应变量中读取数据,您应该会做得很好。

代码语言:javascript
复制
success: function (response) {
   $('#myJson').html('<table style="color:red"><tr><td>' + response.color1 + '</td><td>' + response.color2 + '</td></tr></table>');
}
票数 0
EN

Stack Overflow用户

发布于 2014-01-06 11:24:48

您正在接收的成功响应数据已经在JSON中。删除JSON.parse

代码语言:javascript
复制
$.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...');}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20948876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档