使用ckeditor在ajax帖子中进行表单序列化会抛出ajax错误

时间:2014-03-12 16:13:47

标签: javascript jquery ajax ckeditor

我在我们的项目中使用ckeditor。在ajax帖子中传递该值,如

   //$form is -> $('form') jquery object     
    $("#ajaxsubmitbutton").on('click', function () {
      CKupdate();
    $.ajax({
                        type: ($form.attr('method').toLowerCase() == 'post' ? 'POST' : 'GET'),
                        url: ($form.attr('action') == 'undefined' ? window.location : $form.attr('action')),
                        data: $form.serialize(),
                        success: function (data) {
                            // Use local eval, since it will work in this context
                            callbackFunction(data);
                        },
                        error: function () {
                            var data = "ajaxerror";
                            callbackFunction(data);
                        }
                    });
});

Ckeditor更新代码:

function CKupdate(){
        for ( instance in CKEDITOR.instances )
            CKEDITOR.instances[instance].updateElement();
      }

$ form.serialize具有以下值:

"Id=0&Title=dfg&ShortText=rer&CultureCode=en-US&StartDate=3%2F12%2F2014&EndDate=3%2F26%2F2014&Text=%3Cp%3Etest3%3C%2Fp%3E%0D%0A"

控制器代码:

 public JsonResult Save(int id, string title, string shortText, string text, DateTime? startDate, DateTime? endDate, string cultureCode)
        {
       //process some operation

}

它会抛出一些ajax错误,如"未找到500内部服务器" 。我不知道这个问题的真正原因是什么

可能是序列化表单的问题。对此有任何帮助。

1 个答案:

答案 0 :(得分:1)

我怀疑标签是这里的问题 -

假设Asp.net MVC在这里你有两个选择 -

使用[AllowHtml]方法装饰您的模型属性(不确定将属性转换为模型会有多大的痛苦)

在控制器方法上放置[ValidateInput(false)]标记 您可能需要在配置中将以下标记添加到system.web

<httpRuntime requestValidationMode="2.0"/>

如果您的提交不是帖子,您可能也会遇到问题,在这种情况下,您需要为您的返回值添加allowget。

在没有完整错误的情况下,不确定这是否是您的问题,但这是我开始的地方。您可能需要检查fiddler或firebug中的响应,看看是否可以获得有关该异常的更多信息。

希望有所帮助。