01.08.2019, 15:24
|
Новичок на форуме
|
|
Регистрация: 16.09.2013
Сообщений: 8
|
|
Получение массива в JS от PHP через ajax
Здравствуйте! Столкнулся с проблемой.
Есть обращение к PHP файлу через AJAX, для получения массива даных:
var U = new Array();
jQuery.ajax({
url: 'assets/template/js/calc/getcoefu.php',
type: 'GET',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: 'file='+fileU,
success: function(data){
U = jQuery.parseJSON(data);
}
});
console.log(U);
PHP-файл:
header('Content-Type: application/json');
$file = $_SERVER['DOCUMENT_ROOT'].'/'.$_GET['file'];
$fp = fopen($file, 'r');
$data = array();
$i = 0;
while (($row = fgetcsv($fp, false, ';'))) {
$row = array_map(function($item) {
$item = preg_replace('/.+=([0-9,\.]+)/', '$1', $item);
return $item+0;
}, $row);
array_shift($row);
if( $i > 3 )
$data[] = $row;
$i++;
}
fclose($fp);
echo json_encode($data);
exit;
PHP-файл выводит следующий массив:
Код:
|
[[74,48,38,46,44,37,37,31],[85,59,48,57,54,47,46,40],
[92,68,56,64,61,54,53,47],[100,78,64,73,69,63,62,55],
[105,85,70,79,74,68,67,61],[111,93,78,86,80,76,74,68],
[115,100,83,92,85,81,80,74],[118,105,88,96,89,86,84,79],
[121,111,92,100,92,89,88,83],[123,114,95,103,95,93,91,86]] |
Но на странице я получаю ошибку:
Код:
|
Uncaught SyntaxError: Unexpected token , in JSON at position 2 |
И не могу понять в чем ошибка. Если не ставлю parseJSON, то массив пустой. Вроде все правильно делаю.
Кто-нибудь с этим сталкивалсс, может подсказать что делаю не так?
Спасибо!
|
|
01.08.2019, 15:35
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
vlasenkov,
success: function(data){
U = data;
console.log(U);
}
|
|
01.08.2019, 15:35
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от vlasenkov
|
.$_GET['file'];
|
Так нельзя, это дыра в безопасности.
Насчет ошибки, что-то выводится в браузер кроме json, это может быть BOM, с которым сохранен файл сценария, а его визуально не видно.
array_shift($row); - а наоборот нельзя, ведь это постоянно перебирать массив?
return $item +0; а это зачем?
Последний раз редактировалось laimas, 01.08.2019 в 15:41.
|
|
01.08.2019, 19:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Только сейчас обратил внимание: если явно указан тип ожидаемых данных - dataType: "json", то data уже объект, и jQuery.parseJSON(data) не требуется.
|
|
01.08.2019, 23:13
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от laimas
|
это может быть BOM, с которым сохранен файл сценария
|
И как такое может быть, если в ошибке написано:
Код:
|
Uncaught SyntaxError: Unexpected token , in JSON at position 2 |
Т. е. первые два символа подходили под определение формата JSON.
Сообщение от laimas
|
это может быть BOM, с которым сохранен файл сценария, а его визуально не видно.
|
Так как включить?
Только пробел видно, вместо табуляции вставляется пробел и вместо неразрывного пробела нулевой ширины просто пустое место...
<textarea>{
"usd": 27
}</textarea>
<style>
@font-face {
font-family: "Laimas";
src: url("https://cdn.glitch.com/348d485e-4ba6-4841-a41e-5865874b2d66/laimas-normal.ttf");
unicode-range: U+9, U+20, U+FEFF;
}
textarea {
font: 200% "Laimas", sans-serif;
width: 100%;
height: 4em;
}
</style>
Оно же нарисовано в шрифте...
Последний раз редактировалось Malleys, 01.08.2019 в 23:39.
|
|
02.08.2019, 04:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Очередная прострация для "язык почесать".
|
|
02.08.2019, 13:08
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от laimas
|
Очередная прострация для "язык почесать".
|
И как это помогает решить проблему?
Есть шрифт Laimas, в котором прорисованы три символа: - табуляция (в виде линейки, но можно и в виде тире)
- пробел (в виде звёздочки, но можно и в виде точки на уровне строки)
- неразрывный пробел нулевой ширины (а чем вам не нравится?)
laimas, это же удобно, когда видна табуляция, пробел, неразрывный пробел нулевой ширины? По крайней мере это можно нарисовать в шрифте, вопрос в том почему браузер не использует их, а только пробел. Может какие-то настройки в шрифте нужно указать?
|
|
02.08.2019, 15:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Malleys
|
это же удобно, когда видна табуляция, пробел, неразрывный пробел нулевой ширины?
|
Для того чтобы просмотреть форматированную json строку на стороне сервера (для РНР) достаточно json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE). Вторая константа позволит читать не латиницу вместо тупо смотреть на юникод.
Поэтому не "а чем вам не нравится?", а мне оно не нужно. А для того чтобы понять, что есть грязь до/после строки в виде непечатного, для этого достаточно сравнить длины строк на сервере и на клиенте.
То есть, это я бы так действовал, а вы предлагайте свои инструменты автору, к чему возражения лично мне?
Сообщение от Malleys
|
И как это помогает решить проблему?
|
Вы можете пояснить каким образом пространный с картинками "исторический опус" о причинах первого дня недели "понедельник" у "коммунистов" помог теме? Во-первых это известно давно и без гугла, и я не настолько наивен, чтобы считать вас "и швец, и жнец, и на дуде игрец". Как же мне воспринимать эти ваши опусы? Ну они кроме срача в теме ничего не дают.
|
|
02.08.2019, 18:12
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от laimas
|
А для того чтобы понять, что есть грязь до/после строки в виде непечатного, для этого достаточно сравнить длины строк на сервере и на клиенте.
|
Какая грязь? Это очень полезный символ! Например, указать, в каком месте не должно быть разрыва строки.
Сообщение от laimas
|
То есть, это я бы так действовал, а вы предлагайте свои инструменты автору, к чему возражения лично мне?
|
Вы затронули интересную тему, что определённый символ не видно! Хотя если прочитать сообщение об ошибке, то я не знаю, каким образом вы пришли к к выводу, что виной всему определённый символ!
Сообщение от laimas
|
Вы можете пояснить каким образом пространный с картинками "исторический опус" о причинах первого дня недели "понедельник" у "коммунистов" помог теме?
|
Вот, я нашел пост, о котором вы говорите... https://javascript.ru/forum/misc/780...tml#post510774
В теме обсуждались даты, и теперь вы знаете, почему день недели, возвращаемый date.getDay(), начинается с воскресенья.
Сообщение от laimas
|
пространный... "исторический опус"
|
Там всего-то пара-тройка коротких абзацев... значительную часть поста занимает текст о том, что <select> по умолчанию не использует картинки, это специальные ключевые слова у свойства appearance, а также код (ответ на пост №33), который делает, то что нужно автору вопроса, однако в силу субъективных обстоятельств, она не может его использовать. Хотя идея, в приведённых стилях была использована в другом примере!
Сообщение от laimas
|
буржуев
|
Сообщение от laimas
|
пролетариев
|
Сообщение от laimas
|
коммунистов
|
Сообщение от laimas
|
прострация для "язык почесать"
|
Сообщение от laimas
|
и швец, и жнец, и на дуде игрец
|
Мне просто нужно стоять в стороне и удивляться количеству ярлыков, которыми вы заклеймили людей и нации. Социальная стигматизация во всей её красе!
Кстати тема, про которую вы говорите, жила без моего участия до №66 поста, где до моего сообщения, были взаимные оскорбления, сексисткие высказывания, стигма. laimas, вы в той теме написали намного больше, включая высказывания на тему морали.
Этот пост как глоток свежего воздуха в мире, где всё начинается в понедельник.
Если вернуться к теме... Мой вопрос-то был...
Сообщение от laimas
|
это может быть BOM, с которым сохранен файл сценария, а его визуально не видно.
|
Как включить визуальное отображение этого символа? Я нарисовал шрифт (см. пост №6), но браузер использует из него только пробел.
|
|
06.08.2019, 17:12
|
Новичок на форуме
|
|
Регистрация: 16.09.2013
Сообщений: 8
|
|
Сообщение от laimas
|
return $item+0; а это зачем?
|
Это я делаю, чтобы строки в числа перевести.
Делаю без jQuery.parseJSON, тогда возвращается пустой массив.
|
|
|
|