Я столкнулся с очень странным поведением jQuery, связанным с json. Ниже приведен мой код, в котором я отправляю запрос POST на сервлет, который отправляет ответ JSON. Я могу получить значения для большинства запросов, но некоторые для некоторых запросов, я получаю следующее сообщение об ошибке при получении значений из JSON:weird json parse issue with jQuery
parsererror, SyntaxError: JSON.parse: bad control character in string literal
Но когда я проверяю, что JSON ответ (я получаю его от затмения console) на этом сайте: enter link description here
Этот сайт анализирует JSON без ошибок! На сайт-> скопируйте любой JSON в текстовое поле на вкладке «Текст», затем нажмите «вкладка« Просмотр ». Он будет разбирать его правильно.
После 2-3 JSONs, для которых JQuery отчетов об ошибках -
{"topics": [{ "categoryName":"Law Crime" , "score":"90%"}],"socialTags": [{ "originalValue":"Social inequality" , "importance":"1"},{ "originalValue":"Affirmative action" , "importance":"1"},{ "originalValue":"Discrimination" , "importance":"1"},{ "originalValue":"Education policy" , "importance":"2"},{ "originalValue":"Politics" , "importance":"2"},{ "originalValue":"Ethics" , "importance":"2"},{ "originalValue":"Social philosophy" , "importance":"2"},{ "originalValue":"Same-sex marriage in Canada" , "importance":"2"},{ "originalValue":"Affirmative action in the United States" , "importance":"2"},{ "originalValue":"Same-sex marriage in the United States" , "importance":"2"},{ "originalValue":"Law Crime" , "importance":"1"}],"entities": [{ "_type":"Facility" , "name":"Supreme
Court"},{ "_type":"Organization" , "name":"Supreme
Court"}]}
Я пробовал много раз, и каждый раз, когда для этих JSONs я получаю ту же ошибку.
Я создаю эти JSONs на задней части сервлета.
Ниже мой код для получения значений из JSON в JQuery:
$.ajax({
type: 'POST',
//servlet url
url: 'calaiscaller',
// parameters
data: {content: summary},
// expected data-type of response
dataType: 'json',
// to execute when got the json result
success: function(jsonResponse){
// clear the old topic data
$('#topics').empty();
$('#topics').append("<p class='text-left label label-info'>Topics:</p>");
// add new topic data
$.each(jsonResponse.topics, function(){
var topicData="<p><span class='text-left'>" + this.categoryName + "</span><span class='pull-right'>" + this.score + "</span></p>";
$('#topics').append(topicData);
});
// clear new social-tag data
$('#social-tags').empty();
$('#social-tags').append("<p class='text-left label label-info'>Social Tags:</p>");
// add new social-tag data
$.each(jsonResponse.socialTags, function(){
var socialTagData="<p><span class='text-left'>" + this.originalValue + "</span><span class='pull-right'>" + this.importance + "</span></p>";
$('#social-tags').append(socialTagData);
});
// clear new entities data
$('#entities').empty();
$('#entities').append("<p class='text-left label label-info'>Entities:</p>");
// add new entities data
$.each(jsonResponse.entities, function(){
var entitiesData="<p><span class='text-left'>" + this._type + "</span><span class='pull-right'>" + this.name + "</span></p>";
$('#entities').append(entitiesData);
});
//alert('success');
// write the success status
$('#statusField'+uniqueId).addClass('alert alert-success pull-left');
$('#statusField'+uniqueId).append('Success!');
},
// to execute when error
error: function(jqXHR, textStatus, errorThrown){
//alert("error");
//alert(textStatus);
//alert(errorThrown);
// print the error
// write the error message
$('#statusField'+uniqueId).addClass('alert alert-error pull-left');
$('#statusField'+uniqueId).append('Error: '+textStatus+', '+errorThrown);
},
// always executed at last whether success or error
complete: function(){
// bring back submit button to its original state
$('.showinfo').button('reset');
// hide the progress bar
$('#progress').hide();
// fade in the results
$('#resultbox').fadeIn('slow', function(){
});
}
});
Помощь!
Эта ошибка, как правило, появляется в действительном - ** смотрит ** JSON, когда невидимый символ Юникода (без пробелов или необычный пробел или что-то подобное) каким-то образом волшебным образом нашел способ войти в ответ. –
http://jsonlint.com/ дает лучшие подсказки, что не так с JSON. – Christoph
Это недействительно json on line '57' –