为什么会出现此错误“无效或意外的令牌”?

时间:2018-07-25 17:56:03

标签: php jquery laravel tinymce

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

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

<p>certificate 1</p>

这是正确的。

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

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

并且在控制台上出现错误:“ 中的“ Uncaught SyntaxError:无效或意外的令牌”

 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>';

但是,如果我在数据库中将其更改为“ <p>certificate 1</p><p>test</p>”,即内容位于同一行,则刷新页面时再次出现tinymce按钮。

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

certificateController中的代码,用于将证书内容(在tinymce文本区域中引入的内容)插入数据库:

 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>

1 个答案:

答案 0 :(得分:0)

从去年开始,我就使用tinymce插件为我的一个项目生成了Word文档。那个时候我也面临着同样的问题。实际上,在tinymce中,存在一些错误意味着您必须选择两次映像才能更新并在系统中上传。然后它出现在网页上。第一次尝试不接受。    您应该先做一件事,然后上传图像,然后将其接受到系统中,然后再编写内容。