versiones tutorial setdata español con javascript php jquery symfony ckeditor

javascript - setdata - ckeditor tutorial español



CKEditor no puede analizar la respuesta JSON (2)

Lo que tengo:

  1. Symfony2
  2. 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.