Столкнулся с проблемой вывода информации в HTML код, через JS.
Кратко что я делаю:
Делаю виджет для AmoCRM(вдруг это важно), и постоянно общаюсь с скриптом на PHP, который возвращает мне необходимые данные. При очередном получении данных с скрипта, который в свою очередь получил эти данные через API AmoCRM, получил следующую картину:
В этом как раз таки и проблема, вывод NaN.
Как я получал и передавал данные:
Вы могли заметить, что при часть данных проходит, а часть нет.
1. Номер документа, дата, генерируется скриптом.
2. ФИО в Р.П., ФИО в И.П., Реквизиты, Основание, Должность подставляются из массива данных полученных с Api AmoCRM. (Опытным путем заметил, если с Api приходит числовая строка, то данные в HTML выводятся без проблем)
3. Объекты, скрипт забирает эти данные из MySQL. MySQL база имеет кодировку UTF-8
Что я пытался делать:
1. Менять кодировки через: iconv; mb_convert_encoding; (ничего не изменилось)
2. Менять структуру данных: массив, объект;
3. Менять структуру вывода: toString(), и без;
Исходный код:
Массив который преобразуется в JSON и уходит к виджету в AmoCRM:
$values = array(
'numberDocument' => $numDocument,
'dayDate' => $day,
'monthDate' => $month,
'yearDate' => $year,
'fioIP' => (string)$contactData['custom_fields'][$keys['fioIP']]['values'][0]['value'],
'fioRP' => (string)$contactData['custom_fields'][$keys['fioRP']]['values'][0]['value'],
'nameCompanyZakaz' => $contactData['name'],
'osnov' => (string)$contactData['custom_fields'][$keys['osnov']]['values'][0]['value'],
'requiz' => (string)$contactData['custom_fields'][$keys['requiz']]['values'][0]['value'],
'post' => (string)$contactData['custom_fields'][$keys['post']]['values'][0]['value'],
'objects' => $objects,
);
$objects
$tempArray = array(
'addressObject' => $item['adress'],
'typeObject' => $item['type'],
'cadastralNumberObject' => $item['cadastral_number'],
'cadastralCostObject' => $cadastralCost,
'marketCostObject' => $item['market_value'],
);
$objects[] = $tempArray;
Вывод на экран:
widget.crm_post(
'http://site.com/generator.php?action=preview&document=1&id=' + AMOCRM.data.current_card.id + str,
{},
function (data) {
htmlCode = '';
obj2 = jQuery.parseJSON(data);
console.log(obj2);
obj2.forEach(function (item2, i, obj2) {
console.log(item2);
...
htmlCode = htmlCode + '<div class="widget_settings_block__item_field">' +
'<div class="widget_settings_block__title_field" title="">ФИО в Р.П.: </div>' +
'<div class="widget_settings_block__input_field">' +
+item2.fioRP.toString() +
'</div>' +
'</div>';
...
Что выводит obj2[0].fioRP в Консоли Google Chrome.
widget.crm_post, является оберткой(разработано в AmoCRM) к JQuery.Ajax.
Не пробовал через JQuery.Ajax, т.к хостинг на котором размещен "backend" скрипт виджета, не имеет SSL сертификата.
Я увы не знаю, куда уже копать и что делать, чтобы победить NaN.
Хотелось бы услышать мнение людей, как это победить.