Jsreport показывает разные результаты при рендеринге с клиента и сервера
У меня есть шаблон с именем A и тест Json, хранящийся на сервере. Используя обычную настройку jsreport для рендеринга PDF, задаюсь вопросом работы на сервере.
Теперь я хочу использовать Jsreport_client.js для рендеринга. Я делаю AJAX-вызов getJSON на другой сервер и использую jsclient для рендеринга. Но теперь данные отправляются / обрабатываются неправильно. Ключ, расположенный рядом с корнем объекта JSON, правильный, а остальные - нет. Обратите внимание, что тот же самый JSON визуализируется на сервере правильно
РЕДАКТИРОВАТЬ: ниже звонок
$.getJSON(AJAXurl).success(function (people) {
jsreport.serverUrl = 'http://localhost:5488';
var request = {
template: {
shortid:"rJPUhdmv"
},
data: people
};
jsreport.render('_blank', request);
})
Ниже приведена структура возвращаемого запроса.
{
"responseHeader":{
"status":0,
"params":{
"fq":"{!frange l=0.80 }query($q)",
"q":"{!percentage}etco~",
"group.field":"ent_id"
}},
"grouped":{
"ent_id":{
"ngroups":3,
"groups":[{
"groupValue":"214493",
"doclist":{"numFound":1,"docs":[
{
"add_city":"London",
"add_street":"Devonshire Street",
"nam_comp_name":"ETCO INTERNATIONAL COMMODITIES LTD.",
"add_country":"GB",
"add_id":"668638",
"score":1.0}]
}},OTHER GROUP.....]}}},
"highlighting":{
"C":{
"nam_comp_name":["<span class=\"highlight\">ETO</span>"]}
}}
А ниже находится обработчик на сервере
// Can not read any parameters
</thead>
{{#each grouped.ent_id.groups}}
</tr>
<td>{{offsetIndex @index}}</td>
{{#each doclist.docs}}
<td>{{this.nam_comp_name}}</td>
<td>{{convertScore this.score}}</td>
<td>{{this.add_country}} {{this.add_city}} {{this.add_street}}</td>
<td>{{lis_name}}</td>
{{/each}}
</tr>
{{/each}}
Другой обработчик, который имеет как правильные, так и неверные / нечитаемые данные
{{#responseHeader.params}}
<tr>
<th>Search term</th>
<td>{{sanitizeQuery this.q}}</td> // Read correctly
</tr>
<tr>
<th>Sanction List: </th>
<td>{{sanitizeQuery this.fq.[0]}}</td> // Incorrectly
</tr>
<tr>
<th>Countries:</th>
<td>{{sanitizeQuery this.fq.[1]}}</td> // Incorrectly
</tr>
{{/responseHeader.params}}
<tr>
<th>Search by:</th>
<td>"Method of searching"</td> // Incorrectly
</tr>
<tr>
<th>Found total:</th>
<td>{{grouped.ent_id.ngroups}}</td> // Read correctly
Помощники
function offsetIndex(index) {
return index+1;
}
function convertScore(score) {
a = parseFloat(score);
return a*100;
}
function sanitizeQuery(query) {
a =query
.replace(/{+.*?}+/g, "")
.replace(/\[\[|\]\]/g, "")
.replace(/<.*?>/g, "")
.replace(/add_country:/,"")
.replace(/program_number:/,"")
.replace(/~/,"");
return a;
}
1 ответ
Это была ошибка с сериализацией массива в клиенте браузера jsreport. Теперь это исправлено.
Пожалуйста, обновите до https://www.npmjs.com/package/jsreport-browser-client-dist или обновите весь jsreport, где вы также можете найти его в jsreport@1.0.9