• 1400/06/14

ارسال دیتای ckeditor با استفاده از Ajax :

سلام آقای اردوخانی

من داخل یکی از صفحات همین سایت دوتا ckeditor گذاشتم که وقتی وارد صفحه میشید اولین ckeditor وجود داره ولی دومی رو خود کاربر میتونه اضافه بکنه

و اضافه شدن ckeditor دومی با استفاده از جاوا اسکریپت انجام میشه

ارسال دیتا هم به سمت سرور با استفاده از Ajax انجام میشه

مشکل من اینجاست که وقتی دوتا ckeditor داخل صفحه هست و کاربر دیتا رو ارسال میکنه دفعه اول فقط دیتای ckeditor اولی ارسال میشه و دومی ارسال نمیشه

اما دفعه دوم وقتی کلیک میکنم دیتای هردو ckeditor ارسال میشه

داخل گوگل سرچ کردم موارد مشابه زیادی پیدا کردم اما همشون مربوط به ورژن 4 ckeditor بودند و من از ورژن 5 ckeditor استفاده میکنم وراه حل های اونا قابل پیاده سازی نبود و کارنمیکرد

چطوری میتونم این مشکل رو حل کنم ؟

ممنون میشم اگر راهنمایی کنید

  • 1400/06/15
  • ساعت 09:46

سلام دوست من

به هر دلیل ممکنه این اتفاق بیافته دوست من

لطفا جزییات بیشتری ارائه بدین


  • 1400/06/15
  • ساعت 14:26

نمونه ای از همین مشکل رو میتونید تو لینک زیر ببینید 

https://stackoverflow.com/questions/24398225/ckeditor-doesnt-submit-data-via-ajax-on-first-submit

اما راه حل ارائه شده مربوط به نسخه های قبلی ckeditor هست .

 


  • 1400/06/20
  • ساعت 09:42

از attribute های فرم برای ارسال دیتا به صورت ajax استفاده میکنین یا از $.get و... استفاده میکنین ؟


  • 1400/06/21
  • ساعت 00:32

از $.Ajax


  • 1400/06/22
  • ساعت 11:08

از attribute ها استفاده کنین مشکل برطرف میشه

لینک زیر رو مطالعه کنین :

https://www.learnrazorpages.com/razor-pages/ajax/unobtrusive-ajax


  • 1400/06/22
  • ساعت 16:01

من میخوام دیتا رو به صورت یک josn object ارسال کنم

تو این روش چطوری اینکارو بکنم ؟


  • 1400/06/22
  • ساعت 16:49

مشکل اینه که مقدر ckeditor دومی که با جاواسکریپت به صفحه اد میشه آپدیت نمیشه

 


  • 1400/06/23
  • ساعت 09:26

مقدار ckeditor رو به چه صورت بدست میارین؟

لطفا کدش رو ارسال کنین


  • 1400/06/23
  • ساعت 17:36

 

 var questions=[];
  var questionNames = document.querySelectorAll('[name=QuestionName]');
    for (var i = 0; i < questionNames.length; i++) {
            questions.push({
                "QuestionText": questionNames[i].innerText,
            });
        }

 

 



  • 1400/06/25
  • ساعت 03:03

ممنون آقای اردوخانی

خودم امروز بالاخره درستش کردم

همونجوری که گفتم اینکه دیتای ckeditor دومی که با جاوا اسکریپت به صفحه اد کرده بودم ارسال نمیشد به خاطر آپدیت نشدن این ادیتور بود

داخل سایت ckeditor گفته شده بود که از متد updateSourceElement برای آپدیت کردن ادیتور ، داخل کد های کانفیگ ادیتور استفاده کنیم به این صورت :

ClassicEditor
    .create( document.querySelector( '#editor' ) )
    .then( editor => {
        editor.updateSourceElement();
    } )
    .catch( error => {
        console.error( error );
    } );

این روش رو من امتحان کردم اما نتیجه نداد

تا اینکه امروز رسیدم به لینک زیر از سایت stackoverflow

https://stackoverflow.com/questions/49683668/cannot-insert-php-data-with-ckeditor-via-ajax

داخل این لینک گفته شده که ادیتور رو بعد از e.preventDefault آپدیت کنید

لازمه که بگم برای اینکه بتونیم به ادیتور موردنظر دسترسی داشته باشیم باید درمرحله کانفیگ ، ادیتور رو داخل یک global variable ذخیره کنیم.

یعنی به این صورت :

var ckEditor;
    ClassicEditor.create(document.getElementById(editor),
        {
            //Config


        })
        .then(editor => {
            window.editor = editor;
            
            //Saving editor for update
            ckEditor=editor;
        })
        .catch(error => {
          .............
        });
 $("#formName").on("submit", function (e) {
        e.preventDefault();
        editor.updateSourceElement();

        $.ajax({

			

        .........

        });
    });

این نکته رو هم بگم که برای آپدیت کردن ادیتور در ckeditor 4 از متد updateElement و در ckeditor 5 از متد updateSourceElementاستفاده میشه.


logo-enamadlogo-samandehi