JSON.parse произошла неожиданная ошибка символа

0

Я пытаюсь получить значения JSON с помощью метода post JQuery. Im напишите следующий код для генерации данных JSON с использованием aspjson с http://code.google.com/p/aspjson/

<!--#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);

В чем может быть проблема?

  • 4
    Данные, которые вы получаете, уже находятся в формате JSON. Удалить JSON.parse
Теги:
.post

3 ответа

1
Лучший ответ

Использовать это,

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

И удалите следующую строку: нет необходимости разбирать json снова.

 var data = JSON.parse(response);
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...');}
  • 0
    @Niteshmorajkar спасибо за указание на мою ошибку
0

$.ajax будет анализировать входящий JSON для вас, поэтому переменная response в вашем $.ajax успеха уже была проанализирована в объект 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>');
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню