用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 ...
随机推荐
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
解析Android消息处理机制 ——Handler/Thread/Looper & MessageQueue Keywords: Android Message HandlerThread L ...
- 图像混合学习。运用加权函数,学习opencv基础操作
{ cout<< } { cout<< } ,,logoImage.c ...
- Java OCR tesseract 图像智能字符识别技术 Java实现
Java OCR tesseract 图像智能字符识别技术 Java代码实现 接着上一篇OCR所说的,上一篇给大家介绍了tesseract 在命令行的简单用法,当然了要继承到我们的程序中,还是需要代码 ...
- 1013: [JSOI2008]球形空间产生器sphere
很直观的一个gauss题: 用的是以前用过的一个模板: #include<cstdio> #include<algorithm> #include<cmath> # ...
- win7桌面图标小盾牌怎么去掉(2种方法)
很多用户都会在桌面上放置一些常用的程序图标,由于win7系统提高了系统安全性,新增用户帐户控制,所以会在图标上显示小盾牌,表示需要管理员权限打开.不少win7 32位旗舰版用户觉得这个小盾牌很碍眼,那 ...
- tlplayer for ios V1.1.2加密测试版本(修复1.1.1版本 for ios7播放闪退问题)
此版本主要修复了ios7播放列表导致的程序闪退问题,方便大家测试加密与非加密视频. 此为tlplayer for ios版本,可以播放加密视频与非加密视频. 加密视频下载地址:http://blog. ...
- Visual Studio中的项目属性-->生成-->配置
1.Debug配置 2.Release配置 2.Debug和Release的区别 (1)Debug有定义DEBUG常量,Release没有 (2)Debug没有优化代码,Release有 (3)生成路 ...
- 安装Sublime Text 3插件
按 Ctrl+` 或者如下图调出Console 粘贴以下代码到底部命令行并回车: import urllib.request,os; pf = 'Package Control.sublime-pac ...
- USACO3.23Spinning Wheels
直接枚举角度 数据比较水吧 /* ID: shangca2 LANG: C++ TASK: spin */ #include <iostream> #include<cstdio&g ...
- 速冻熟食制品的QS的申请办法
QS审核流程许可证申办程序食品生产加工企业按照下列程序申请获得食品生产许可证:1.食品生产加工企业按照地域管辖和分级管理的原则,到所在地的市(地)级以上质量技术监督部门提出办理食品生产许可证的申请:2 ...