使用ajax調用web Api 方法中出現的問題總結

来源:http://www.cnblogs.com/jingjing-blogs/archive/2016/11/08/6043297.html
-Advertisement-
Play Games

一,Get請求 1,無參數Get請求,跟平常寫ajax請求一樣,並無什麼差別 $.ajax({ url: '.../api/User/UserVerify, type: 'get', success: function (json) { alert(json); }, error: function ...


一,Get請求

1,無參數Get請求,跟平常寫ajax請求一樣,並無什麼差別

  $.ajax({
            url: '.../api/User/UserVerify,
            type: 'get',
            success: function (json) {
                alert(json);
            },
            error: function () {
                alert("error");
            }
        });

此時,後臺代碼api代碼可以直接public string UserVerify(){},需要在action上添加HttpGet特性

2,有一個或多個參數的Get請求

$.ajax({
            url: '.../api/User/UserVerify?loginName=admin&passWord=123456',
            type: 'get',
            success: function (json) {
                alert(json);
            },
            error: function () {
                alert("erroe");
            }
        });

此時,後臺Api代碼可以public string LoginVerify(string loginName,string passWord){},需要在action上添加HttpGet特性

二,Post請求

1,無參數的Post請求

  $.post(
            '.../api/User/UserVerify',
           function (json) {
                alert(json);
            });

此時,後臺調用需要在Action上添加HttpPost特性,   public string LoginVerify(){}

2,一個參數的Post請求

在post請求中,方法的參數必須要用 [FromBody] 屬性來修飾才可以, [FromBody] 就告訴Web API 要從post請求體重去獲取參數的值。也就是要寫成如下形式:

 [HttpPost,ActionName("UserVerify")]
        public string LoginVerify([FromBody]string loginName){}

同時,前臺調用時如果還是按之前的寫法

$.post(
            '.../api/User/UserVerify',
            { loginName:"admin"},
           function (json) {
                alert(json);
            });

則會出現如下情況,即:可以正常跳轉,可是獲取不到相應傳輸的值。因為Web API 要求請求傳遞的 [FromBody] 參數,肯定是有一個特定的格式,才能被正確的獲取到。而這種特定的格式並不是我們常見的 key=value 的鍵值對形式。Web API 的模型綁定器希望找到 [FromBody] 里沒有鍵名的值,也就是說, 不是 key=value ,而是 =value 。

所以,接下來我們把調用參數修改為如下形式:

需要註意的時,在此時一定要把服務重新生成

3,兩個或多個參數的Post請求

[FromBody] 修飾的參數只能有一個。我們需要對傳遞的多個參數進行封裝才行。

這裡,我們可以將 loginName和 passWord 封裝成一個User類

 

後臺方法需要

[HttpPost,ActionName("UserVerify")]
        public string LoginVerify([FromBody]UserExEntity user)
        {
            try
            {
                return "姓名" + user.loginName+"密碼"+user.passWord;
            }
            catch
            {
                return null;
            }
        }

 

前臺調用需要

此時,我們可以看到Form Data 的格式是 key=value&key=value 這種表單數據格式,我們平時使用的比較多的一般為json格式。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Runtime.Serialization.Formatters.B ...
  • 2016-11-08 劉鐵錳大師MVVM視屏教程及代碼:www.cnblogs.com/prism/ 詳細文件下載地址: http://down.51cto.com/data/306663 絕對贊 ...
  • define symbol undef symbol if symbol [operator symbol2]... else elif symbol [operator symbol2] endif warning text text指在編譯器輸出中的警告文字 error text text指在編 ...
  • 新開博客,程式人生的一個新起點,創個博客紀念一下 ...
  • 感覺好久沒有寫博客了, 這幾天有點小忙, 接下來會更忙, 索性就先寫一篇吧. 後面估計會有更長的一段時間不會更新博客了. 廢話不多說, 先上菜. 一、示例 1. 先建類, 類的名稱與讀取的表名並沒有什麼關係,可以不一樣, 然後就是其中的屬性大小寫不限 2. 測試代碼 接下來, 可以進入Dapper的 ...
  • typeof: 是運算符,獲得某一類型的 System.Type 對象。 Int32 t = new Int32(); Type t = typeof(int); GetType: 是方法,獲取當前實例的類型。 int i = 10; Console.WriteLine(i.GetType()); ...
  • 對於一些需要及時反應的系統來說,代碼執行效率的調優則顯得尤為重要,正好結合今天自己遇到的問題,說明以下幾點: 1.避免迴圈語句(for,foreach)的嵌套使用 2.避免使用一些異常處理語句(tyr..catch..finally) 3.需對資料庫執行多次增刪改查時,請使用StringBuilde ...
  • 在.NET Framework框架中,程式集是重用、安全性以及版本控制的最小單元。程式集的定義為:程式集是一個或多個類型定義文件及資源文件的集合。程式集主要包含:PE/COFF,CLR頭,元數據,清單,CIL代碼,元數據。 PE/COFF文件是由工具生成的,表示文件的邏輯分組。PE文件包含“清單”數 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...