【问题标题】:Why it appears this error "Invalid or unexpected token"?为什么会出现此错误“无效或意外令牌”?
【发布时间】:2019-01-02 15:14:41
【问题描述】:

我正在使用 tinymce 使用“laravel-tinymce-simple-imageupload”包上传图片。所以我有一个页面,用户可以在其中选择注册类型并在 tinymce 文本区域中输入一些内容,以将该内容与所选注册类型相关联。

但是有一个问题。例如,用户可以选择一种注册类型,然后在文本区域中写入例如“证书 1”并单击表单中的“存储”按钮。在数据库中,tinymce 中引入的内容存储如下:

<p>certificate 1</p>

所以这是正确的。

但问题是,例如,如果用户在文本区域中而不是只写“证书 1”,而是写了“证书 1”,然后输入,在下一行也写例如“测试”并单击表单“存储”按钮页面刷新,tinymce 按钮从 textarea 中消失,textarea 中引入的内容插入到 db 中,如:

<p>certificate 1</p>
<p>test</p>

并且在控制台上出现错误:“Uncaught SyntaxError: Invalid or unexpected token” in:

 var certificate = {};
certificate[1] = 
'<p>cert1<img src="../../../img/image_1532441196_7.jpeg" 
 alt="" width="1200" height="900" /></p>';
        certificate[2] = '<p>cert2</p>
<p>&nbsp;</p>
<p>cert 2</p>
<p>&nbsp;</p>
<p>aee</p>';

但如果我在数据库中更改为“&lt;p&gt;certificate 1&lt;/p&gt;&lt;p&gt;test&lt;/p&gt;”,即内容在同一行,刷新页面时会再次出现 tinymce 按钮。

你知道可能是什么问题吗?

certificateController 中将证书内容(tinymce textarea 中引入的内容)插入数据库的代码:

 public function update(Request $request){

        $registrationType = RegistrationType::where('id', $request->registrationType)->first();

        $certificate = $registrationType->certificate;

        // if no certificate exists for this type, create it
        if(!$certificate ) {
            $certificate = new Certificate();
        }

        // the certificate_content is the textarea with the tinymce plugin
        $certificate->content = $request->certificate_content;
        $certificate->save();

        $registrationType->certificate_id = $certificate->id;
        $registrationType->save();

        $certificateContent = RegistrationType::with('certificate')->where('id', $request->registrationType)->first();

        Session::flash('success','Certificate configured with success for the selected registration type.');

        return redirect()->back();

    }

jQuery:

<script type="text/javascript">


        var certificate = {};
        @foreach($conference->registrationTypes as $registrationType)
                @if(!$registrationType->certificate)
            certificate[{{ $registrationType->id }}] = '';
        @else
            certificate[{{ $registrationType->id }}] = '{!!   $registrationType->certificate->content !!}';
        @endif
        @endforeach

        $(function () {

            $('.radio').change(function () {

                var registrationTypeId = $('input[name=registrationType]:checked').val();
                $(tinymce.get('certificate_content').getBody()).html(certificate[registrationTypeId]);
            });

            tinymce.init({
                selector: 'textarea',
                plugins: 'image code link lists textcolor wordcount ' +
                '         hr pagebreak colorpicker textpattern anchor table media',
                relative_urls: true,

                file_browser_callback: function (field_name, url, type, win) {
                    // trigger file upload form
                    if (type == 'image') $('#formUpload input').click();
                }
            });

        });


    </script>

【问题讨论】:

    标签: php jquery laravel tinymce


    【解决方案1】:

    自去年以来,我使用 tinymce 插件为我的一个项目生成 word doc。那个时候我也面临同样的问题。实际上,在 tinymce 中存在一些错误意味着您必须选择两次图像才能更新并上传到系统中。然后出现在网页上。在第一次尝试中它不接受。 你应该做一件事,首先你上传图片,然后一旦它被系统接受,然后写入内容。

    【讨论】:

    • 谢谢,但问题也是没有插入任何图像,问题似乎是有段落时。
    猜你喜欢
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多