Javascript 使用ckeditor在ajax post中序列化表单时抛出ajax错误

Javascript 使用ckeditor在ajax post中序列化表单时抛出ajax错误,javascript,jquery,ajax,ckeditor,Javascript,Jquery,Ajax,Ckeditor,我正在我们的项目中使用ckeditor。在ajax帖子中传递该值,如 //$form is -> $('form') jquery object $("#ajaxsubmitbutton").on('click', function () { CKupdate(); $.ajax({ type: ($form.attr('method').toLowerCase() == 'post' ? 'POS

我正在我们的项目中使用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();
      }
"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"
$form.serialize具有以下值:

function CKupdate(){
        for ( instance in CKEDITOR.instances )
            CKEDITOR.instances[instance].updateElement();
      }
"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-找不到内部服务器”。我不知道这个问题的真正原因是什么


可能是序列化表单时出现的问题。这方面的任何帮助。

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

假设在这里使用Asp.net MVC,您有两种选择-

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

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

<httpRuntime requestValidationMode="2.0"/>

如果您的提交不是一篇文章,那么您可能也会遇到问题,在这种情况下,您需要将allowget添加到返回值中

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


希望有帮助

您的表单操作看起来像什么?表单操作->仅保存。路径没有问题$表单也包含一些html标记内容。如“测试”

”,我也需要通过此html标记内容,可能是这导致了我假设中的问题。我不确定我没有任何模型。我只想在ajax帖子中以字符串形式传递html标记内容。如果可能的话?非常感谢。在控制器操作中添加ValidateInput(false)后,它现在可以工作了。但是不需要在web.config中添加代码?由于我没有在web.config中添加该代码,因此即使在这种情况下,我也会尝试使用validateInput标记,尽管我知道在某些MVC版本中使用该标记时遇到问题。如果这不起作用,你可能想建立一个快速的模型来获得表单发布的结果-你根本不需要更改html,只要表单发布变量匹配,它应该正确映射,这将允许你使用当前推荐的方法。太好了-很高兴听到这个消息!我不确定您使用的是哪个版本-我认为验证模式设置仅适用于一些较新的MVC版本。没问题:)奇怪-我认为这对于4.0是必要的,但我一定弄错了。有关标签用途的更多信息: