Что у меня есть:CKEditor не может разобрать ответ JSON
- Symfony2
- CKEditor с Image и Enhanced Image (also image2) аддонов
Я нашел информацию о загрузке файлов на сервер на official site:
Пример - Настройка модуля загрузки изображений:
config.extraPlugins = 'uploadimage';
config.imageUploadUrl = '/uploader/upload.php?type=Images';
Ответ: Файл успешно загружен При загрузке файла успешно затем JSON ответ со следующими записями в ожидается:
- закачано - Установите 1.
- имя_файла - Имя загружаемого файла.
- url - URL-адрес загруженный файл (URL-код).
Пример:
{
"uploaded": 1,
"fileName": "foo.jpg",
"url": "/files/foo.jpg"
}
Symfony возвращает JSON: товару
return new JsonResponse(
array(
'uploaded' => '1',
'fileName' => $image->getName(),
'url' => $image->getWebPath()
)
);
После успешной загрузки изображения я вижу:
И ошибка в JS консоли:
Ресурс интерпретируется как документ, но передаются с MIME тип приложения/JSON: "http://example.com/app_dev.php/dashboard/settings/upload/image?CKEditor=example_post_content&CKEditorFuncNum=1&langCode=en".
Но он должен работать как на official page (см второй редактор)
Я попытался вернуть другой ответ от Symfony, как:
$response = new Response();
$response->headers->set('Content-Type', 'application/json');
$response->setContent(
json_encode(
array(
'uploaded' => '1',
'fileName' => $image->getName(),
'url' => $image->getWebPath()
)
));
return $response;
, но не работает. Есть идеи?
UPDATE
Я решил проблему с помощью answer. Окончательный FCKeditor код выглядит следующим образом:
$response = new Response();
$response->headers->set('Content-Type', 'text/html');
$content = "<script type=\"text/javascript\">\n";
$content .= "window.parent.CKEDITOR.tools.callFunction(1, '".$image->getWebPath()."', '');\n";
$content .= "</script>";
$response->setContent($content);
return $response;
Кто-нибудь знает другое решение или почему решение с ответом JSON не работает?
Можете ли вы показать код js, который вызывает бэкэнд? –
Почему есть знак доллара в '$ return new JsonResponse' – chiliNUT
@chiliNUT только ошибка копирования-вставки –