用Ajax调用web api,解决URL太长的问题;
本来是用的WCF,但是服务需要多种方式调用(后台+前端Ajax),最终局面就是我在WCF每个服务中都判断一下↓
#region 解决接收不到Ajax中传来的参数... if (jsonParames == null && HttpContext.Current.Request.QueryString["参数"] != null) jsonParames = HttpContext.Current.Request.QueryString["参数"]; else if (jsonParames == null && HttpContext.Current.Request.QueryString["参数"] == null) return JSON.Instance.ToJSON("{\"ret\":\"0\",\"msg\":\"参数为空.\"}"); #endregion
但是Ajax中用QueryString传输数据的话,有长度限制。
找了下,还有人说可以用form来解决提交的
<form id='form0' method='POST' action='http://localhost:22377/api/Article_/Article_Update/' onsubmit = "set_v()"> <input id='id_v' type='hidden' value='value_default' name='jsonParames'/> <input type="submit" value="XXX" class="" /> </form>
不过提交完了之后直接就会将页面跳转到'action'所指向的页面。。。
最后还是决定再发布一个web api,然后用Ajax来解决
<form id="form1"> <div> ID:<input type="text" id="id_ID" /> <br /> <input type="button" value="POST" id="getPersons" /> </div> <div id="ret"> </div> </form> <script type="text/javascript"> function set_v(){ alert('set value!'); var v = 'too long data .'; document.getElementById("id_v").value = v; alert(document.getElementById("id_v").val()); } $('#getPersons').click(function () { document.getElementById("ret").innerHTML = '';//清楚上次查询内容... var ID = $("#id_ID").val(); $.ajax({ type: 'POST', url: 'http://localhost:22377/api/Article_/Article_Update',//?jsonParames=' + jsonParames, //dataType: 'JSONP',//如果这行不注释请求的'type'就是GET,(哪怕第一行就规定了type:'POST') //contentType:"application/json; charset=utf-8;",//这行不注释说不允许跨域调用!!! data: { "jsonParames": '{"id":"0"}'//jsonParames和web api中的参数名对应; }, success: function (_data) { alert(_data); var info = eval('(' + _data + ')'); //alert(data); var list = eval('(' + info.list + ')'); var fragment = document.createDocumentFragment(); $.each(list, function (i, field_list) { $.each(field_list, function (i, field) { var item = document.createElement("li"); item.appendChild(document.createTextNode('[' + i + ']' + '...' + field)); fragment.appendChild(item); //alert(i + "...is..." + field); }) }) $("#ret").append(fragment); }, error: function () { } }); }); </script>
web api 中;
[HttpPost, HttpGet] public string Article_Update([FromBody]string jsonParames) { if (string.IsNullOrEmpty(jsonParames) || jsonParames.ToLower() == "jsonparames") { jsonParames = System.Web.HttpContext.Current.Request.Form["jsonParames"]; } return "xx"; }
用Ajax调用web api,解决URL太长的问题;的更多相关文章
- 开发程序过程中遇到的调用Web Api小问题
在用Umbraco Web Api开发程序时,前端使用React调用Web Api 当时是有一个页面Search.cshtml,把用React产生的脚本代码,在这个页面进行引用 写了一个Api, 调用 ...
- ASP.NET MVC4中调用WEB API的四个方法
http://tech.it168.com/a2012/0606/1357/000001357231_all.shtml [IT168技术]当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各 ...
- WebApi系列~通过HttpClient来调用Web Api接口
回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...
- 通过HttpClient来调用Web Api接口
回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...
- ajax调用.net API项目跨域问题解决
ajax调用.net API项目,经常提示跨域问题.添加如下节点代码解决:httpProtocol <system.webServer> <handlers> <remo ...
- jQuery跨域调用Web API
我曾经发表了一篇关于如何开发Web API的博客,链接地址:http://www.cnblogs.com/guwei4037/p/3603818.html.有朋友说开发是会开发了,但不知道怎么调用啊? ...
- Identity Server 4 从入门到落地(五)—— 使用Ajax访问Web Api
前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...
- Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口
1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...
- React Native教程 - 调用Web API
react-native官网Fetch介绍:https://facebook.github.io/react-native/docs/network.html#content react-native ...
随机推荐
- js 转化类似这样的时间( /Date(1389060261000)/)问题
首先在你的js文件里添加这段代码: /** * 日期时间格式化方法, * 可以格式化年.月.日.时.分.秒.周 **/ Date.prototype.Format = function (format ...
- CFNetwork学习总结
- php smarty section使用
文件:section.tpl <html> <head> <title></title> </head> <body> {sec ...
- asp.net控件(1)Repeater
1. 通过Repeater和数据源创建表格 <AlternatingItemTemplate>属性可以控制单元格交替显示不同的背景颜色 <table width=" sty ...
- 把硬盘格式化成ext格式的cpu占用率就下来了
把硬盘格式化成ext格式的cpu占用率就下来了我是使用ext4格式 @Paulz 还有这种事情? 现在是什么格式?- - ,你自己用top命令看一下啊就知道什么东西在占用cpu了下载软件一半cpu都用 ...
- HDU 2493 Timer 数学(二分+积分)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2493 题意:给你一个圆锥,水平放置,圆锥中心轴与地面平行,将圆锥装满水,在圆锥某一表面开一个小洞,流出来 ...
- 请问什么是UTF字符串?
utf是编码方式,一般而言是国际性质的编码格式,有utf-8,utf-9,utf-16等多种形式,是最高级别的编码方式,也就是说如果你要读取的数据流设置成utf编码的话就要用到相应的编码方式来读取了, ...
- 手势识别官方教程(6)识别拖拽手势用GestureDetector.SimpleOnGestureListener和onTouchEvent
三种现实drag方式 1,在3.0以后可以直接用 View.OnDragListener (在onTouchEvent中调用某个view的startDrag()) 2,onTouchEvent() ...
- 存储过程系列之存储过程具体操作过程及sql数据库调用
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 存 ...
- 近期会放出tlplayer for android的更新版本
tlplayer for android的一次重大更新在近期将会放出,自从去年初的时候放出tlplayer android版本后,一直都没有更新tlplayer,而tlplayer for windo ...