asp.net mvc的JavaScriptResult一定要与Ajax提交表单配合使用吗,
使用Ajax.BeginForm创建的表单提交到Action后返回JavascriptResult能够执行返回的js,但使用Html.BeginForm创建表单,在Action中返回的JS代码却不会执行,这是为什么?
你简单一点这样理解:
所有页面返回的都是字符串,要让这个字符串变成代码运行,
在javascript中有个函数叫eval,你有空么可以搜索这个看看啥意思。
感觉这样你可以知道其所以然,而不只是知其然。
eval我是知道的,Html.BeginForm创建表单,提交表单到Action,Action返回JavascriptResult,调用的是Controller的JavaScript方法,无论返回的是eval("jscode")还是jsCode,都不起作用,但如果是Ajax.BeginForm则会执行,原因?!
@北在北方: MVC返回的都是字符串。你先把请求响应理解了。再想这些把
@北在北方: 你目前的状态是大部分web开发人员,
没有搞清楚啥是客户端,啥是页面返回的时候。
这个阶段过了就豁然开朗了。
@吴瑞祥: 答非所问!我问的是为什么AjaxHelper提交表单能够运行返回的js字符串而HtmlHelper不能,不是问的返回的是什么
@北在北方: 原因就是返回的数据结构不一样。。。。
@吴瑞祥: 你看被鄙视了吧,哈哈哈~
@吴瑞祥: 返回的是javascript代码文本,content-type是application/x-javascript,对吧,数据结构不同?Ajaxhelper提交表单和HtmlHelper提交表单会导致服务器返回不同的数据结构??!!
@北在北方: 一个是同步请求,一个是异步请求。
同步请求会由浏览器来处理返回值,一般都是返回html页面,
异步请求一般会由JS来处理返回值,一般返回值都是一个JS脚本,可能是一个对象,也可能是一个方法。
这样能明白吗?