本来是用的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太长的问题;的更多相关文章

  1. 开发程序过程中遇到的调用Web Api小问题

    在用Umbraco Web Api开发程序时,前端使用React调用Web Api 当时是有一个页面Search.cshtml,把用React产生的脚本代码,在这个页面进行引用 写了一个Api, 调用 ...

  2. ASP.NET MVC4中调用WEB API的四个方法

    http://tech.it168.com/a2012/0606/1357/000001357231_all.shtml [IT168技术]当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各 ...

  3. WebApi系列~通过HttpClient来调用Web Api接口

    回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...

  4. 通过HttpClient来调用Web Api接口

    回到目录 HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api ...

  5. ajax调用.net API项目跨域问题解决

    ajax调用.net API项目,经常提示跨域问题.添加如下节点代码解决:httpProtocol <system.webServer> <handlers> <remo ...

  6. jQuery跨域调用Web API

    我曾经发表了一篇关于如何开发Web API的博客,链接地址:http://www.cnblogs.com/guwei4037/p/3603818.html.有朋友说开发是会开发了,但不知道怎么调用啊? ...

  7. Identity Server 4 从入门到落地(五)—— 使用Ajax访问Web Api

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  8. Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口

    1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...

  9. React Native教程 - 调用Web API

    react-native官网Fetch介绍:https://facebook.github.io/react-native/docs/network.html#content react-native ...

随机推荐

  1. 开发错误日志之FTP协议传输文件问题

    从开发端用FTP协议向服务器(Linux系统)传输文件时,cat -A查询文件内容中行尾会有^M出现. 解决方案:改用SFTP协议上传文件.

  2. 想使用 MongoDB ,你应该了解这8个方面!

    应用性能高低依赖于数据库性能,MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.MongoDB 是一个介于关系数据库和非关 ...

  3. javascript技巧合集

    转http://www.blogjava.net/zhaochengming/archive/2010/04/09/317837.html http://www.cnblogs.com/fxgachi ...

  4. activiti集成spring异常(DbSqlSession)

    在eclipse配置一个简单的activiti项目,配置的是mysql数据库,报错如下: SLF4J: Failed to load class "org.slf4j.impl.Static ...

  5. easyui源码翻译1.32--PropertyGrid(属性表格)

    前言 继承自$.fn.datagrid.defaults.使用$.fn.propertygrid.defaults重写默认值对象.下载该插件翻译源码 属性表格提供The propertygrid pr ...

  6. Pascal Game Development with Jason McMillen

    In this much belated episode I talk with Jason McMillen of Pascal Game Development. We discuss the s ...

  7. leetcode面试准备:Add and Search Word - Data structure design

    leetcode面试准备:Add and Search Word - Data structure design 1 题目 Design a data structure that supports ...

  8. ip_conntrack 实现

    启动时首先在ip_conntrack_standalone.c中调用 static int __init ip_conntrack_standalone_init(void) //proc相关部分省略 ...

  9. Java之关键字static和final的使用

    static 在Java中声明属性.方法时,可使用关键字static来修饰. 1.static变量       按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或 ...

  10. hadoop2.2原理:采样器

    多输入路径-只采一个文件-(MultipleInputs+getsample(conf.getInputFormat) 之前弄采样器,以为已经结束了工作,结果现在又遇到了问题,因为我的输入有两个文件, ...