Нельзя выбрать свойство объекта - РЕШЕНО

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
xor
Сообщения: 2045
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 289 раз
Поблагодарили: 633 раза

Re: Нельзя выбрать свойство объекта

Сообщение xor » Вт янв 10, 2017 11:13 pm

запрос http://localhost/panel/linkedobject.htm ... ClockChime
ответ

Код: Выделить всё

{"PROPERTIES":[{"ID":"12","CLASS_ID":"7","TITLE":"time","DESCRIPTION":"\u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f","OBJECT_ID":"0","KEEP_HISTORY":"0","ONCHANGE":"","SYSTEM":"","DATA_KEY":"0","DATA_TYPE":"0","CLASS_TITLE":"Timer"}]} 
потом write_error.php

Изображение

в Headers

Код: Выделить всё

Request URL:http://localhost/write_error.php?error=%20URL:%20http://localhost/admin.php?pd=cGluZ2hvc3RzOntpbnN0YW5jZT1hZG19pz_cGFuZWw6e2FjdGlvbj1waW5naG9zdHN9pz_&md=pinghosts&inst=adm&view_mode=edit_pinghosts&id=9%20-%20Uncaught%20SyntaxError:%20Unexpected%20token%20%EF%BB%BF%20in%20JSON%20at%20position%200;%20line:%201
Request Method:GET
Status Code:200 OK
Remote Address:127.0.0.1:80
Response Headers
view source
Connection:Keep-Alive
Content-Length:112
Content-Type:text/html; charset=UTF-8
Date:Tue, 10 Jan 2017 20:00:10 GMT
Keep-Alive:timeout=5, max=97
Server:Apache/2.2.15 (Win32) PHP/5.4.30
X-Powered-By:PHP/5.4.30
Request Headers
view source
Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Cookie:_ga=GA1.1.2004208568.1483441360; txtMainTab=Timeline; resolve_ids=0; prj=qfrj1sp1vijjnihq39dpocfuk4; sub_aa16=on; sub_302a=on; sub_8373=on
DNT:1
Host:localhost
Referer:http://localhost/admin.php?pd=cGluZ2hvc3RzOntpbnN0YW5jZT1hZG19pz_cGFuZWw6e2FjdGlvbj1waW5naG9zdHN9pz_&md=pinghosts&inst=adm&view_mode=edit_pinghosts&id=9
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Query String Parameters
view source
view URL encoded
error: URL: http://localhost/admin.php?pd=cGluZ2hvc3RzOntpbnN0YW5jZT1hZG19pz_cGFuZWw6e2FjdGlvbj1waW5naG9zdHN9pz_
md:pinghosts
inst:adm
view_mode:edit_pinghosts
id:9 - Uncaught SyntaxError: Unexpected token  in JSON at position 0; line: 1
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Нельзя выбрать свойство объекта

Сообщение olehs » Ср янв 11, 2017 12:25 am

Убедитесь, что в файле /htdocs/modules/linkedobject/linkedobject.class.php нет BOM.
Хотя это может быть не именно этот файл, а какой-нибудь другой, который инклудиться по ходу ((
Аватара пользователя
xor
Сообщения: 2045
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 289 раз
Поблагодарили: 633 раза

Re: Нельзя выбрать свойство объекта

Сообщение xor » Ср янв 11, 2017 12:51 am

Увы!
Не прокатило,
я уже с гитхаба обновлялся, но сейчас специально пересохранил в UTF без BOM этот файл.
Обратился к Сергею в личку с этим вопросом.

О! Спасибо, что натолкнули на мысль...
Сейчас напихаю debmes'ов в linkedobject.class.php, буду ловить баг с неверной кодировкой, может, в базу что-то пролезло.
Аватара пользователя
xor
Сообщения: 2045
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 289 раз
Поблагодарили: 633 раза

Re: Нельзя выбрать свойство объекта

Сообщение xor » Чт янв 12, 2017 11:04 pm

Вот дрянь лезет в linkedobject.class.php
Вот при выборе связанного объекта генерируется ссылка (повторяю в консоли)

Код: Выделить всё

Command: json_encode(geturl("http://localhost/panel/linkedobject.html?ajax=1&op=properties&object=ClockChime",0))
Result:
"\ufeff\ufeff{\"PROPERTIES\":[{\"ID\":\"12\",\"CLASS_ID\":\"7\",\"TITLE\":\"time\",\"DESCRIPTION\":\"\\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u0435 \\u0432\\u0440\\u0435\\u043c\\u044f\",\"OBJECT_ID\":\"0\",\"KEEP_HISTORY\":\"0\",\"ONCHANGE\":\"\",\"SYSTEM\":\"\",\"DATA_KEY\":\"0\",\"DATA_TYPE\":\"0\",\"CLASS_TITLE\":\"Timer\"}]}"
Спецы php, как избавиться от \ufeff\ufeff ?
str_replace("\ufeff","",строка) ведь для json_encode не подходит?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Нельзя выбрать свойство объекта

Сообщение olehs » Пт янв 13, 2017 11:04 am

Сохраните это скрипт для PowerShell в файл с расширением ps1 и запустите из папки htdocs

Код: Выделить всё

Function ContainsBOM
{   
    return $input | where {
        $contents = new-object byte[] 3
        $stream = [System.IO.File]::OpenRead($_.FullName)
        $stream.Read($contents, 0, 3) | Out-Null
        $stream.Close()
        $contents[0] -eq 0xEF -and $contents[1] -eq 0xBB -and $contents[2] -eq 0xBF }
}

get-childitem ".\*.*" | where {!$_.PsIsContainer -and $_.Length -gt 2 } | ContainsBOM
pause
За это сообщение автора olehs поблагодарил:
xor (Сб янв 14, 2017 12:55 pm)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2045
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 289 раз
Поблагодарили: 633 раза

Re: Нельзя выбрать свойство объекта

Сообщение xor » Сб янв 14, 2017 12:55 pm

ДА!
Ваша функция показала на config.php, что и предположил Сергей - при обновлении этот файл не заменяется.
Поправил кодировку файла, всё заработало.
Резюме на будущее:
Файлик с повершелл скриптом 1.ps1 сохранил в папку htdocs
и из консоли запустил его

Код: Выделить всё

C:\_majordomo\htdocs>powershell -ExecutionPolicy ByPass -command ". 'c:\_majordomo\htdocs\1.ps1'"
если скрипт покажет файлы, поменять им кодировку на UTF-8 without BOM
Ответить