WebApi的調(diào)用-1.前端調(diào)用

前端調(diào)用

前端

html

<div class="row">
    <form id="queryForm">
        <input name="id" type="text" />
        <input name="name" type="text" />
    </form>
</div>

<div class="row">
    <div class="panel panel-warning">
        <div class="panel-heading">Get</div>
        <div class="panel-body">
            <a class="btn btn-primary" id="btn1">無參</a>
            <a class="btn btn-primary" id="btn2">1個參數(shù)</a>
            <a class="btn btn-primary" id="btn3">2個參數(shù)</a>
            <a class="btn btn-primary" id="btn4">實體參數(shù)1 <span class="label label-warning">[FromUri]</span></a>
            <a class="btn btn-primary" id="btn5">實體參數(shù)2 <span class="label label-warning">(傳遞反序列化){ 參數(shù): JSON.stringify(json) }</span></a>
        </div>
    </div>
    <div class="panel panel-success">
        <div class="panel-heading">post</div>
        <div class="panel-body">
            <p>
                <div>
                    <input name="postsubmit" type="text"/>
                </div>
            </p>
            <p>
                <a class="btn btn-success" id="postbtn1">
                    1個參數(shù)
                    <span class="label label-danger">key為空</span>
                </a>
                <a class="btn btn-success" id="postbtn2">
                    1個json
                    <span class="label label-danger">(傳遞序列化)傳遞:JSON.stringify({ id: 1, pass: '123', name: "tangsansan" })摔癣,接收:實體蛹锰,</span>
                    <span class="label label-warning">contentType: 'application/json'</span>
                </a>
            </p>
            <p>
                <a class="btn btn-success" id="postbtn5">
                    1個表單
                    <span class="label label-danger">(傳遞序列化)傳遞:JSON.stringify($('#queryForm').serialize()),接收:dynamic腻要,</span>
                    <span class="label label-warning">contentType: 'application/json'</span>
                </a>
                <a class="btn btn-success" id="postbtn6">
                    1個表單
                    <span class="label label-danger">傳遞:$('#queryForm').serialize()艳丛,接收:實體</span>
                </a>
            </p>
            <p>
                <a class="btn btn-success" id="postbtn7">
                    1個復(fù)雜json
                    <span class="label label-danger">(傳遞序列化)傳遞:{ "User": "{ id: 1, pass: '123', name: "tangsansan" }", "Info": "info" }匣掸,接收:JObject</span>
                </a>
            </p>
        </div>
    </div>
</div>

js

<script>
    var $queryform = { id: 1, pass: '123', name: "tangsansan" }

    $(function () {
        //get傳遞無參
        $('#btn1').on('click', function () {
            $.ajax({
                url: 'http://localhost:809/api/Values/GetList',
                type: 'get',
                success: function (data) {
                    alert(data)
                }
            });
        });
        //get傳遞1個參數(shù)
        $('#btn2').on('click', function () {
            $.ajax({
                url: 'http://localhost:809/api/Values/Get',
                type: 'get',
                data: { id: 1 },
                success: function (data) {
                    alert(data)
                }
            });
        });
        //get傳遞2個參數(shù)
        $('#btn3').on('click', function () {
            $.ajax({
                url: 'http://localhost:809/api/Values/GetList',
                type: 'get',
                data: { id: 1, pass: 'aa' },
                success: function (data) {
                    alert(data)
                }
            });
        });

        //get傳遞實體1 [fromurl]
        $('#btn4').on('click', function () {
            $.ajax({
                url: 'http://localhost:809/api/Values/GetUserList',
                type: 'get',
                data: $queryform,
                success: function (data) {
                    alert(data)
                }
            });
        });

        //get傳遞實體2 JSON.stringify字符串
        $('#btn5').on('click', function () {
            $.ajax({
                url: 'http://localhost:809/api/Values/UserJsonList',
                type: 'get',
                data: { userJson: JSON.stringify($queryform) },
                success: function (data) {
                    alert(data)
                }
            });
        });
        
        //post傳遞一個參數(shù)
        $('#postbtn1').on('click', function () {
            var $posttext = $('input[name=postsubmit]').val();
            $.ajax({
                url: 'http://localhost:809/api/Values/PostOne',
                type: 'post',
                //data: { "value": $posttext }, //key=value,但后臺接收為空
                data: { "": $posttext },  //key為空
                success: function (data) {
                    alert(data);
                }
            });
        });

        //post傳遞json字符串
        $('#postbtn2').on('click', function () {
            $.ajax({
                url: 'http://localhost:809/api/Values/PostTwoForm',
                type: 'post',
                contentType: 'application/json',     //必須加上,聲明為json
                data: JSON.stringify($queryform),    
                success: function (data) {
                    alert(data);
                }
            });
        });

        //post傳遞一個表單
        //通過dynamic動態(tài)類型能順利得到多個參數(shù)氮双,省掉了[FromBody]這個累贅碰酝,
        //并且ajax參數(shù)的傳遞不用使用"無厘頭"的{"":"value"}這種寫法,
        //有一點需要注意的是這里在ajax的請求里面需要加上參數(shù)類型為Json眶蕉,即 contentType: 'application/json', 這個屬性砰粹。
        $('#postbtn5').on('click', function () {
            $.ajax({
                url: 'http://localhost:809/api/Values/PostOneForm',
                type: 'post',
                contentType: 'application/json',     //必須加上,聲明為json
                 data: JSON.stringify($('#queryForm').serialize()),
                 success: function (data) {
                    alert(data);
                }
            });
        });
        
        //post傳遞一個表單
        $('#postbtn6').on('click', function () {
            $.ajax({
                url: 'http://localhost:809/api/Values/PostTwoForm',
                type: 'post',
                data: $('#queryForm').serialize(),
                success: function (data) {
                    alert(data);
                }
            });
        });

        //post傳遞復(fù)雜json字符串
        $('#postbtn7').on('click', function () {
            $.ajax({
                url: 'http://localhost:809/api/Values/PostThreeeForm',
                type: 'post',
                data: { "User": $queryform, "Info": "info" },
                success: function (data) {
                    alert(data);
                }
            });
        });

    });
</script>

后臺

public class ValuesController : ApiController
    {
        [HttpGet]
        public IEnumerable<string> GetList()
        {
            return new string[] { "value1", "value2" };
        }

        [HttpGet]
        public string Get(int id)
        {
            return "value";
        }

        [HttpGet]
        public IEnumerable<string> GetList(int id, string pass)
        {
            return new string[] { id.ToString(), pass.ToString() };
        }

        //Get傳參:實體,必須添加 FromUri
        [HttpGet]
        public string GetUserList([FromUri]User user)
        {
            return string.Format("id:{0},name:{1},pass:{2}", user.id.ToString(), user.name, user.pass);
        }

        [HttpGet]
        public string UserJsonList(string userJson)
        {
            User user = JsonConvert.DeserializeObject<User>(userJson);
            return string.Format("id:{0},name:{1},pass:{2}", user.id.ToString(), user.name, user.pass);
        }

        // POST api/values
        [HttpPost]
        public string PostOne([FromBody]string value)
        {
            return value;
        }

        //一個表單(一個json)
        [HttpPost]
        public string PostOneForm(dynamic value)
        {
            string user = Convert.ToString(value);
            return user;
        }

        //一個表單(一個實體)
        [HttpPost]
        public string PostTwoForm(User user)
        {
            //Dictionary<string, object> objects = GetRequest();

            return string.Format("id:{0},name:{1},pass:{2}", user.id.ToString(), user.name, user.pass);
        }

        [HttpPost]
        public string PostThreeeForm(JObject jObject)
        {
            //Dictionary<string, object> objects = GetRequest();
            string username = HttpContext.Current.Request.Form["User[name]"];
            dynamic json = jObject;
            JObject User = json.User;
            User user = User.ToObject<User>();
            //Dictionary<string, object> objects = GetRequest();

            return string.Format("id:{0},name:{1},pass:{2}", user.id.ToString(), user.name, user.pass);
        }

        // PUT api/values/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/values/5
        public void Delete(int id)
        {
        }

        /// <summary>
        /// 獲取所有參數(shù)   
        /// </summary>
        /// <returns>
        ///     A System.Collections.Generic.Dictionary<string,object> value...
        /// </returns>
        public Dictionary<string, object> GetRequest()
        {
            var getrequest = HttpContext.Current.Request.Form;
            Dictionary<string, object> dict = new Dictionary<string, object>();

            for (int i = 0; i < getrequest.AllKeys.Length; i++)
            {
                dict.Add(getrequest.GetKey(i), getrequest[i]);
            }
            return dict;
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碱璃,一起剝皮案震驚了整個濱河市弄痹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嵌器,老刑警劉巖肛真,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異爽航,居然都是意外死亡蚓让,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門讥珍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來历极,“玉大人,你說我怎么就攤上這事衷佃√诵叮” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵氏义,是天一觀的道長锄列。 經(jīng)常有香客問我,道長惯悠,這世上最難降的妖魔是什么邻邮? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮克婶,結(jié)果婚禮上筒严,老公的妹妹穿的比我還像新娘。我一直安慰自己鸠补,他們只是感情好萝风,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著紫岩,像睡著了一般规惰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泉蝌,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天歇万,我揣著相機與錄音,去河邊找鬼勋陪。 笑死贪磺,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诅愚。 我是一名探鬼主播寒锚,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了刹前?” 一聲冷哼從身側(cè)響起泳赋,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喇喉,沒想到半個月后祖今,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡拣技,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年千诬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膏斤。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡徐绑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掸绞,到底是詐尸還是另有隱情泵三,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布衔掸,位于F島的核電站,受9級特大地震影響俺抽,放射性物質(zhì)發(fā)生泄漏敞映。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一磷斧、第九天 我趴在偏房一處隱蔽的房頂上張望振愿。 院中可真熱鬧,春花似錦弛饭、人聲如沸冕末。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽档桃。三九已至,卻和暖如春憔晒,著一層夾襖步出監(jiān)牢的瞬間藻肄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工拒担, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嘹屯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓从撼,卻偏偏與公主長得像州弟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容