MVC 4.0 Ajax.BeginForm返回JavaScript对象不成功

由于存在js版本的兼容性,而在vs里面如果没有通过Nuget更新jquery.unobtrusive-ajax.js版本的话,那jquery版本就应该仅限定于1.7-1.8之间,如果引用2.1的话,那么微软自己封装的一套Ajax就不能用了,所以,大家在使用Ajax.BeginForm的时候,如果遇到一些问题,不妨尝试下降低下jquery的版本,或许你的问题就会迎刃而解;

一:jquery.unobtrusive-ajax.js与MicrosoftAjax.js、MicrosoftMvcAjax.js的区别

在MVC 1,2版本中,他们使用自己的Ajax类库来实现ajax请求,相应的js文件为MicrosoftAjax.js,MicrosoftMvcAjax.js
但是程序员更喜欢jQuery,“write less, do more ”,而微软意识到这一点,软后就慢慢接受jquery ,然后就有了jquery.unobtrusive-ajax.js;

要使MicrosoftAjax.js、MicrosoftMvcAjax.js能正常使用的话,必须要在在web.config中增加client side validation and unobtrusive javascript 两个配置
<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

,只有在这个时候,之前的Ajax.BeginForm查询到后台函数才能按照你的意愿来。

可是如果您想要用jquery.unobtrusive-ajax.js(更加轻便),可以直接将true设置为false,或者将这两个配置给删掉。

上面引用两种不同js文件的时候,都要注意一下js版本的问题,因为微软出了这两套js文件还是很早了,特别是MicrosoftAjax.js、MicrosoftMvcAjax.js这两个js文件,如果一直不行就一直降低js版本,一直到得行就可以了!

二:Content与JavaScript的区别

Content是返回一个字符串,然后到前台中会自动解析成一段HtmlString。

而JavaScript是返回一个js代码,然后在前台中会自动插入到js脚本中去执行。可是JavaScript能做的,Content都能做,只需将Content中的字符串改变一下就可以了,如:

return JavaScript("alert(‘哈哈!‘)");

return Content("<script type=‘text/javascript‘>alert(‘哈哈!‘);</script>")

上面两种效果是一样的!

所以大家适当考虑下自己编码适当的风格;

接下来请允许我盗一张图来解释下其中的关系

 

时间: 2024-10-15 11:30:03

MVC 4.0 Ajax.BeginForm返回JavaScript对象不成功的相关文章

MVC 5.0(or5.0↓) Ajax.BeginForm 异步上传附件问题,答案是不能的!

MVC 5.0(or5.0↓)  Ajax.BeginForm 异步上传附件问题,答案是不能的! (请注意我这里说的异步!) 来看一下下面这段一步提交file的代码 //前台 .cshtml 文件 <script src="~/jquery.unobtrusive-ajax.js"></script>@using (Ajax.BeginForm("upLoadAsync", "UploadFile", new AjaxOp

Ajax.BeginForm返回方法OnSuccess

在MVC3里面--程序集 System.Web.Mvc.dll, v4.0.30319有这么一个Ajax.BeginForm异步登录验证的类型,我们在下面给出一个例子:在登录页面Logion.cshtml.使用@using (Ajax.BeginForm("Login", "Home", new AjaxOptions { HttpMethod = "Post", OnSuccess = "tips", OnBegin = &

自坑实录 - Asp.net MVC中无法使用@Ajax.BeginForm问题解决

创建空的web项目,通过Nuget引用mvc组件来搭建空的MVC项目时, 在视图页面中无法使用@Ajax.BegForm来进行异步提交数据, 而新建默认的MVC模板项目却能够正常使用@Ajax.BegForm, 所有的引用都是齐全的,那么问题出在哪里呢? ..................... <script src="~/Scripts/jquery.min.js"></script> <script src="~/Scripts/jque

Ajax调用返回json数组,对象 (JSONArray.fromObject)

JSONArray和JSONObject的详细使用:http://blog.csdn.net/yangbobo1992/article/details/8350765 /** * ajax调用返回json数组 * @param list */ public void printList(List<?> list){ HttpServletResponse response = ServletActionContext.getResponse(); //获取response实例 response

php 返回json对象

服务器端使用php+ajax调用返回json对象. php <?php $result = array('Status' => false, 'Message' => 'sss'); $jsonstring = json_encode($result); header('Content-Type: application/json'); //前面代码容易找到,但是这句是失败无数次在http://stackoverflow.com上找到的. echo $jsonstring; ?>

asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比

通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致的概括下. (1). ActionResult(base):最基本的Action类型,返回其他类型都可以写ActionResult. (2). ContentResult:返回ContentResult用户定义的内容类型. public ActionResult Content() { return

Ajax请求php返回json对象数据中包含有数字索引和字符串索引,在for in循环中取出数据的顺序问题

//php中的数组数据格式 Array ( [all] => Array ( [title] => ALL [room_promotion_id] => all ) [best_available_rate] => Array ( [title] => Best Available Rate [room_promotion_id] => best_available_rate ) [30] => Array ( [room_promotion_id] =>

asp.net mvc &#160;Ajax.BeginForm 异步上传图片的问题

当debug到这里,你们就发现不管是 Request.Files["Upload"]亦或 Request.Files[0] 都不会取到文件流. 这就是我要说的,当使用Ajax.BeginForm(jquery.unobtrusive-ajax.js) 异步上传是不可行的,因为文件流不会被C#代码读取,但是并不影响 Ajax.BeginForm(jquery.unobtrusive-ajax.js) 异步提交表单的特性. 那我我们应该如何异步提交表单呢? 利用 $("#form

MVC Ajax.BeginForm 提交上传图片

吃水不忘挖井人,如果对你有帮助,请说声谢谢.如果你要转载,请注明出处.谢谢! 异步提交时,出现图片不能上传. 起初我定格在  System.Web.Mvc  中.查询源码时,也是没有问题的.那问题出现在哪 里? 答案:JS  jquery.unobtrusive-ajax.js 经查看,修改如下Demo: function asyncRequest(element, options) { var confirm, loading, method, duration, enctype, is_as