Я пытаюсь получить значения 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);
В чем может быть проблема?
Использовать это,
$('#myJson').html('<table style="color:red"><tr><td>' + response.color1 + '</td><td>' + response.color2 + '</td></tr></table>');
И удалите следующую строку: нет необходимости разбирать json снова.
var data = JSON.parse(response);
Полученные вами данные об успешном ответе уже находятся в 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...');}
$.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>');
}