这样可以充分利用MVC路由,以便充分利用MVC框架。

灵感来自于stusmith的答案。

在这里我有一个ActionController的动作javascript为这个URL的动作:

/application/js

我在这里包括静态文件,因为我只需要一个主要的javascript文件下载。你可以选择只要返回动态的东西,如果你想要的:

///

/// Renders out javascript

///

///

[OutputCache(CacheProfile = "Script")]

[ActionName("js")]

public ContentResult RenderJavascript()

{

StringBuilder js = new StringBuilder();

// load all my static javascript files

js.AppendLine(IO.File.ReadAllText(Request.MapPath("~/Scripts/rr/cart.js")));

js.AppendLine(";");

// dynamic javascript for lookup tables

js.AppendLine(GetLookupTables());

js.AppendLine(";");

return new ContentResult()

{

Content = js.ToString(),ContentType = "application/x-javascript"

};

}

这是创建我们的查找表的帮助函数。只需为您要使用的每个RouteUrl添加一行。

[NonAction]

private string GetLookupTables()

{

StringBuilder js = new StringBuilder();

// list of keys that correspond to route URLS

var urls = new[] {

new { key = "updateCart",url = Url.RouteUrl("cart-route",new { action = "updatecart" }) },new { key = "removeItem",new { action = "removeitem" }) }

};

// lookup table function

js.AppendLine("// URL Lookuptable");

js.AppendLine("$.url=function(url) {");

js.AppendLine("var lookupTable = " + new JavaScriptSerializer().Serialize(urls.ToDictionary(x=>x.key,x=>x.url)) + ";");

js.AppendLine("return lookupTable[url];");

js.AppendLine("}");

return js.ToString();

}

这将生成以下动态javascript,它基本上只是从任意键到我的操作方法所需的URL的查找表:

// URL Lookuptable

$.url=function(url) {

var lookupTable = {"updateCart":"/rrmvc/store/cart/updatecart","removeItem":"/rrmvc/store/cart/removeitem"};

return lookupTable[url];

}

在cart.js中,我可以有这样的功能。

请注意,url参数取自查找表:

var RRStore = {};

RRStore.updateCart = function(sku,qty) {

$.ajax({

type: "POST",url: $.url("updateCart"),data: "sku=" + sku + "&qty=" + qty,dataType: "json"

// beforeSend: function (){},// success: function (){},// error: function (){},// complete: function (){},});

return false;

};

我可以从任何地方只用:

RRStore.updateCart(1001,5);

这似乎是我可以想到的唯一方法,这将允许我以干净的方式使用路由。在javascript中动态创建URLS是非常难以测试的。测试类型可以添加到这里的某个地方,以方便测试。

asp.net mvc jquery ajax post,使用ASP.NET MVC在JS文件中设置jQuery的ajax url相关推荐

  1. 利用jQuery的deferred异步按顺序加载JS文件

    前段时间看了阮一峰的jQuery的deferred对象详解一文,对jQuery中的deferred的用法了一些了解,今天看到园子里的一篇文章:关于重构JS前端框架的失败经验(顺便怀念那些死去的代码), ...

  2. js html保存json,如何在json文件中存储jQuery或javascript变量?

    我可以知道有没有机会将jquery变量保存在json文件中?提前致谢.如何在json文件中存储jQuery或javascript变量? 我: var image='/test/test.png'; 我 ...

  3. JS文件中加载jquery.js(JS文件添加其他JS文件)

    最近有一个需求: 1.在一个html中只能引入一个JS文件 不能有JS代码和其他JS文件的引入 2.这个JS文件中 还要引入其他的JS文件 3.所有JS功能都写在这个JS文件中 这些代码用到了jque ...

  4. jQuery调用其他JS文件中的方法

    一个JSP页面中,可以引入多个JS文件 当需要调用某个JS文件中的方法时,可以这么写 首先 在该页面中引入调用的JS文件 <script src="${ctx}/static/js/a ...

  5. js文件中发送ajax请求,ulr路径不起作用的解决办法

    前言: 在写Python项目的时候,单独的js文件发送ajax请求,并不起效果并且提示路径错误 错误原因分析: {% url 'myadmin_updategoodsgrade' %} # 是模板中的 ...

  6. VSCode中,新建js文件中编译器自带jQuery提示失效的解决方法

    VSCode中,新建js文件中编译器自带jQuery提示失效的解决方法 在VSCode中,新建js文件可能会发生VSCode自带的jQuery提示引起失效,如下图 在HTML文件中进行编辑,<s ...

  7. ajax 与php页面取值,在同一页面中使用PHP和AJAX的最佳方法

    在同一页面上,我有几种类型的代码:PHP,JS和HTML.我想从HTML表单中获取信息并进行PHP处理,而无需在单击"发送"按钮后重新加载页面. PHP获取它通过API发送的值(来 ...

  8. php把表单转为json保存,javascript – 使用jquery将表单数据保存到本地json文件中

    我有一个带有一些输入字段的基本表单.我想在提交表单时将表单数据保存到json文件中. json文件中保存数据的格式应如下所示. [ {"title":"some text ...

  9. web项目中jsp文件中使用jquery失效

    学习过程中遇到的小问题,编写的jquery绑定事件一直无法在页面触发,查阅了多种说法,比如$符号在jsp有冲突,改成jQuery使用等,后面发现原因在于其不能访问/WEB-INF/目录下的文件,而我引 ...

最新文章

  1. 计算比尔盖茨財富的方法
  2. 百炼OJ:2750:鸡兔同笼
  3. TQ210裸机编程(2)——LED流水灯
  4. java访问登录网页_===java怎样访问需要登录才能查看的网页????急!!===...
  5. 中继代理 server2008R2
  6. php mysql 命令行模式_MySQL_MYSQL导入导出sql文件简析,一.MYSQL的命令行模式的设置- phpStudy...
  7. 【POJ3070】斐波那契数列f[n]的后四位,n达1e+9(矩阵快速幂模版题)
  8. 计算机基础——网卡(网络适配器network adaptor)
  9. 10_微信小程序-BLE低功耗蓝牙开发-连接设备
  10. 一本书读懂大数据时代
  11. ubuntu使用certbot给nginx添加ssl证书
  12. vs2019社区版下载教程(详细)
  13. 微信公众平台开发——群发信息
  14. git 撤销单个文件到某个提交
  15. Oracle删表报错ora00054,【Oracle】ORA-00054 错误解决方法
  16. c语言扫雷游戏构成原理,扫雷游戏的C语言实现
  17. UE4_AR/MR项目经验
  18. html的基础网页代码源(超基础)
  19. 技术总监.部门经理.程序员
  20. 活久见!这么好的图文电子书制作工具我竟然才发现

热门文章

  1. 目标检测方法系列——R-CNN, SPP, Fast R-CNN, Faster R-CNN, YOLO, SSD
  2. FPGA与MCU,DSP(如C6000,C5000等)等设计思想的异同
  3. 通道抠图--火焰,背景颜色统一为黑色
  4. map传参上下文赋值的问题
  5. 2018年9月份GitHub上最热门的Python项目
  6. 解决rtl8723be网卡故障
  7. mysql innodb和myisam比较
  8. 不重启的情况下linux系统安装中文包生效
  9. 编码时的一些普适原则
  10. Python:通过远程监控用户输入来获取淘宝账号和密码的实验(二)