javascript - setdata - ckeditor tutorial español
CKEditor no puede analizar la respuesta JSON (2)
Lo que tengo:
- Symfony2
- CKEditor con Image e Image Enhanced Image (también image2) addons
Encontré información sobre cómo subir archivos al servidor en el sitio oficial :
Ejemplo: configuración del complemento de carga de imágenes:
config.extraPlugins = ''uploadimage'';
config.imageUploadUrl = ''/uploader/upload.php?type=Images'';
Respuesta: archivo cargado correctamente Cuando se carga el archivo correctamente, se espera una respuesta JSON con las siguientes entradas:
- cargado: establecido en 1.
- fileName - Nombre del archivo cargado.
- url: URL de un archivo cargado (codificado por URL).
Ejemplo:
{
"uploaded": 1,
"fileName": "foo.jpg",
"url": "/files/foo.jpg"
}
Symfony devuelve la respuesta JSON:
return new JsonResponse(
array(
''uploaded'' => ''1'',
''fileName'' => $image->getName(),
''url'' => $image->getWebPath()
)
);
Después de subir con éxito una imagen, veo:
Y error en la consola JS:
Recurso interpretado como Documento pero transferido con la aplicación de tipo MIME / json: " http://example.com/app_dev.php/dashboard/settings/upload/image?CKEditor=example_post_content&CKEditorFuncNum=1&langCode=en ".
Pero debe estar funcionando como en la página oficial (ver segundo editor)
Intenté devolver otra respuesta de Symfony, como:
$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;
pero no funciona ¿Alguna idea?
ACTUALIZAR
Resolví el problema usando la answer . El código final de FCKeditor se ve así:
$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;
¿Alguien sabe otra solución o por qué la solución con respuesta JSON no funciona?
La respuesta JSON solo se usa cuando pega una imagen en el contenido, para subir archivos de los diálogos debe usar la respuesta javascript normal
Lo que tienen en su ejemplo en el segundo editor funciona exactamente igual que en tu ACTUALIZACIÓN .
En respuesta tienen Content-Type: text/html
y el contenido es
<script type="text/javascript">
window.parent.CKEDITOR.tools.callFunction("92", "//userfiles//images//side-nav.jpg", "");
</script>
Por lo tanto, es poco probable que haya otra solución.