MVC4 Jquery / UI / Ajax Release Build打破了我的表单提交?

时间:2013-05-02 15:35:20

标签: jquery json iis asp.net-mvc-4 release-mode

非常奇怪的问题。

我有一个MVC4 Web应用程序,它使用弹出编辑(通过JQueryUI和部分视图),当应用程序在调试模式下构建时,或者它是在发布模式下构建并在IIS Express上运行时,它可以正常工作。 / p>

HttpPost操作要么返回包含错误的HTML部分视图(重新填充UI对话框),要么返回JSON响应 return Json(new { success = true });

如果我将DEBUG构建部署到IIS,它也可以正常工作。

但是,如果我将一个RELEASE版本部署到IIS它停止工作,客户端浏览器(所有这些)开始将我的json响应视为文件下载......?!

我摆弄了请求,他们是不同的..... 有效的发送标题:

Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest

......那些失败的人.....

Accept: text/html, application/xhtml+xml, */*
Content-Type: application/x-www-form-urlencoded

...并且没有X-Requested-With标题。

TBH我不知道为什么REQUEST头只是基于构建配置而不同....?! 帮助

1 个答案:

答案 0 :(得分:0)

我发现答案是什么......谈论一场完美的风暴......

我使用的是JQuery 1.9.1。 显然是最新版本的JQuery cause "bundling" to break .....

在调试模式下,甚至在IIS Express上的发布模式下捆绑都没有做任何事情。然而,当我向IIS发布发布模式时,它突然出现在生活中......并且很快就破坏了我的javascript。

....这阻止了我的JQuery.on处理程序覆盖表单提交按钮.....

....这导致表单通过HTML而不是AJAX提交......

....这导致JSON响应被浏览器“下载为文件”......

....由于所有的线索都在那里,这让我觉得有点愚蠢地提出这个问题......

当然,解决方案是修复jquery * .min.js文件,以便它们不会破坏捆绑(如附带的问题/答案中所述)。哼哼。