CKEditor无法解析JSON响应

Max*_*sky 29 javascript php jquery ckeditor symfony

是)我有的:

  1. Symfony2的
  2. 带有图像增强图像(也是图像2)插件的CKEditor

我发现有关在官方网站上将文件上传到服务器的信息:

示例 - 设置图像上载插件:

config.extraPlugins = 'uploadimage';
config.imageUploadUrl = '/uploader/upload.php?type=Images';
Run Code Online (Sandbox Code Playgroud)

响应:文件成功上载文件上传成功后,需要使用以下条目的JSON响应:

  • 已上传 - 设为1.
  • fileName - 上传文件的名称.
  • url - 上传文件的URL(URL编码).

例:

{
    "uploaded": 1,
    "fileName": "foo.jpg",
    "url": "/files/foo.jpg"
}
Run Code Online (Sandbox Code Playgroud)

Symfony返回JSON响应:

return new JsonResponse(
            array(
                'uploaded'  => '1',
                'fileName'  => $image->getName(),
                'url'       => $image->getWebPath()
            )
        );
Run Code Online (Sandbox Code Playgroud)

成功上传图片后,我看到:

在此输入图像描述

和JS控制台中的错误:

资源解释为Document但使用MIME类型application/json传输:" http://example.com/app_dev.php/dashboard/settings/upload/image?CKEditor=example_post_content&CKEditorFuncNum=1&langCode=en ".

但它必须像在官方页面上一样工作(参见第二个编辑器)

我试图从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;
Run Code Online (Sandbox Code Playgroud)

但不行.任何的想法?

UPDATE

我通过回答解决了这个问题.最终的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;
Run Code Online (Sandbox Code Playgroud)

有没有人知道另一个解决方案或为什么JSON响应的解决方案不起作用?

Alf*_*oML 6

只有在内容中粘贴图像时才使用JSON响应,对于从对话框中上传文件,您必须使用正常的javascript响应

  • "正常响应"是你发现有效的.多年来一直如此,只有新的粘贴系统使用JSON响应.您可以在他们的文档中找到它http://docs.ckeditor.com/#!/guide/dev_file_browser_api-section-example-4以及解释如何在CKEditor中上传文件的任何其他网站 (2认同)

Eug*_*rin 4

他们在第二个编辑器中的示例中的内容与您在UPDATE中输入的内容完全相同。

作为回应,他们的Content-Type: text/html内容是

<script type="text/javascript">
  window.parent.CKEDITOR.tools.callFunction("92", "\/userfiles\/images\/side-nav.jpg", "");
</script>
Run Code Online (Sandbox Code Playgroud)

因此,不太可能有其他解决方案。