我正在使用Asp.net MVC应用程序。在我的项目中,我使用了名为Dhtmlx Scheduler的第三方JavaScript库。
此库中有一个函数,然后将调度程序上的所有数据写入XML格式。
然后,我需要操纵这些数据,并在我的视图页面上写回<textarea>
。
截至目前,这就是我所拥有的:
查看:
function save() {
var url = "/Home/Save"
var xml = scheduler.toXML();
$.ajax({
url: url,
Type: "POST",
dataType: 'json',
async: false,
data: { xmlString: xml },
contentType: 'application/json; charset=utf-8',
success: alert("File Saved in C:\\ Drive as Tasks.xml")
});
}
控制器:
public ActionResult Save(string xmlString)
{
XmlDocument doc = new XmlDocument();
try
{
doc.LoadXml(xmlString);
}
catch(Exception e)
{
Console.WriteLine(e);
}
doc.Save(@"C:\\Tasks.xml");
W6ViewModel viewModel = new W6ViewModel();
viewModel.engineers = db.W6ENGINEERS.ToList();
viewModel.tasks = db.W6TASKS.ToList();
viewModel.skills = db.W6TASKS_REQUIRED_SKILLS1.ToList();
viewModel.categories = db.W6TASKTYPECATEGORY.ToList();
gatherInfo(viewModel);
return View("Index", viewModel);
}
当试图保存三个事件(Dhtmlx对象)时,它可以完美地工作,当我尝试向XML添加更多数据时,我得到了这个错误(阅读表单FireBug):
此请求的查询字符串长度超出配置的长度 maxQueryStringLength值。
非常感谢任何帮助。 谢谢!
Firebug控制台:
答案 0 :(得分:4)
我相信jQuery.ajax使用的是type
,而不是Type
。这是区分大小写的。如果您查看您的Firebug,它正在执行GET请求而不是POST:
$.ajax({
url: url,
Type: "POST",
dataType: 'json',
async: false,
data: { xmlString: xml },
contentType: 'application/json; charset=utf-8',
success: alert("File Saved in C:\\ Drive as Tasks.xml")
});
应该是
$.ajax({
url: url,
type: "POST",
dataType: 'json',
async: false,
data: { xmlString: xml },
contentType: 'application/json; charset=utf-8',
success: alert("File Saved in C:\\ Drive as Tasks.xml")
});
答案 1 :(得分:1)
Grr我还不能发表评论,我似乎记得你传递过一个原始值
data: xml
而不是
data : { xmlString: xml }
答案 2 :(得分:-1)
已在此帖中解释 - &gt; request exceeds the configured maxQueryStringLength when using [Authorize]
您应该更改web.config中的配置设置,以允许更多的默认值的2048字符。
所以基本上你需要改变
<httpRuntime maxRequestLength = "" maxQueryStringLength ="">
到你认为可以接受的数字。
修改:您是否尝试将Type: "POST"
更改为type: "POST"
?
因为javascript是区分大小写的语言。
对于无效的Json原语,请尝试:
$.ajax({
url: url,
type: "POST",
dataType: 'json',
async: false,
data: 'xmlString='+ xml,
contentType: 'application/json; charset=utf-8',
success: alert("File Saved in C:\\ Drive as Tasks.xml")
});