Способ управления:Некорректное выход после JSON.parse (...)
@RequestMapping(value = "channelIntentionDetails.html", method = RequestMethod.POST)
public @ResponseBody
Report getChannelIntentionDetails(@RequestBody SearchParameters searchParameters) {
LOGGER.info("In ReportController.getChannelIntentionDetails(...), searchParameters " + searchParameters);
return channelDetailsService.getIntentionDetails(searchParameters);
}
Отчет POJO:
public class Report {
private Map<String, Collection<String>> parameterWiseResult;
private Collection<String> results;
private String result;
private String spid;
.
.
.
}
В результаты коллекция держит JSON строки, возвращаемые из коллекции MongoDB
Фрагмент JS AJAX:
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST","channelIntentionDetails.html",false);
xmlhttp.setRequestHeader("Content-Type","application/json");
xmlhttp.setRequestHeader("Accept","application/json");
xmlhttp.send(stringifiedSearchParameter);
alert("Plain AJAX response "+ xmlhttp.response);
alert("After JSON.parse(...) "+ (JSON.parse(xmlhttp.response)).results);
drawIntentionPieChart((JSON.parse(xmlhttp.response)).results);
function drawIntentionPieChart(data) {
//alert("In drawIntentionPieChart(...) " + intentionGooglePieChart);
if (intentionGooglePieChart == null
|| intentionGooglePieChart == 'undefined') {
//alert("Creating new intentionPiechart");
intentionGooglePieChart = new google.visualization.PieChart(
document.getElementById('intentionPiechart'));
}
intentionGooglePieChart.clearChart();
//var jsonData = JSON.parse(data);
var jsonData = data;
var data = new google.visualization.DataTable();
data.addColumn('string', 'Intention');
data.addColumn('number', 'Share');
for (i = 0; i < jsonData.length; i++) {
/* alert("Intention : " + jsonData[i]._id.Intention_category
+ " Count : " + jsonData[i].count); */
data.addRows([ [ jsonData[i]._id.Intention_category,
parseInt(jsonData[i].count) ] ]);
}
var options = {
title : 'Intention Analysis',
titleTextStyle : {
color : '#0E5EAE'
},
fontSize : 14,
width : 390,
height : 200
};
intentionGooglePieChart.draw(data, options);
}
Первое предупреждение, где "результаты" является массивом
Plain AJAX response {"parameterWiseResult":null,"results":["{ \"_id\" : { \"SpId\" : 352 , \"Intention_category\" : \"Opine\" , \"Report_Id\" : 2 , \"Channel_Id\" : 1} , \"count\" : 1}","{ \"_id\" : { \"SpId\" : 352 , \"Intention_category\" : \"Wish,Purchase\" , \"Report_Id\" : 2 , \"Channel_Id\" : 1} , \"count\" : 1}","{ \"_id\" : { \"SpId\" : 352 , \"Intention_category\" : \"Complain\" , \"Report_Id\" : 2 , \"Channel_Id\" : 1} , \"count\" : 1}","{ \"_id\" : { \"SpId\" : 352 , \"Intention_category\" : \"Purchase\" , \"Report_Id\" : 2 , \"Channel_Id\" : 1} , \"count\" : 2}","{ \"_id\" : { \"SpId\" : 352 , \"Intention_category\" : \"None\" , \"Report_Id\" : 2 , \"Channel_Id\" : 1} , \"count\" : 93}"],"result":null,"spid":null,"idvallistsearchprofile":null,"idvallisttags":null,"spmaster":null,"competitiveParameters":null}
Второе предупреждение, где после JSON.parse (...), массив брекет именно. [] отсутствуют:
After JSON.parse(...) { "_id" : { "SpId" : 352 , "Intention_category" : "Opine" , "Report_Id" : 2 , "Channel_Id" : 1} , "count" : 1},{ "_id" : { "SpId" : 352 , "Intention_category" : "Wish,Purchase" , "Report_Id" : 2 , "Channel_Id" : 1} , "count" : 1},{ "_id" : { "SpId" : 352 , "Intention_category" : "Complain" , "Report_Id" : 2 , "Channel_Id" : 1} , "count" : 1},{ "_id" : { "SpId" : 352 , "Intention_category" : "Purchase" , "Report_Id" : 2 , "Channel_Id" : 1} , "count" : 2},{ "_id" : { "SpId" : 352 , "Intention_category" : "None" , "Report_Id" : 2 , "Channel_Id" : 1} , "count" : 93}
Позже я получаю ошибки при попытке повторить этот результат анализа.
TypeError: jsonData [я] ._ идентификатор не определен
data.addRows([ [ jsonData[i]._id.Intention_category,
parseInt(jsonData[i].count) ] ]);
Где я Мессинг?
Исправленный результат возвращает массив объектов ... Как вы выполняете повторный анализ результата? Можете ли вы поделиться фрагментом кода. – Uttam
Добавлен фрагмент, в котором появляется ошибка. –
Содержимое массива представлено в виде строк с двойными кавычками для каждого объекта. Вам нужно изменить веб-службу, чтобы вернуть содержимое в виде объектов вместо строк. – Uttam