.net core mvc控制器方法返回字符串


mvc頁面一個刪除的方法,用ajax請求了控制器的刪除方法,一開始用的

$.post("/admin/del", { id: id }, function (data) {

}, "json")

調試走了后台控制器的方法,但沒走到function里面,post改成了get也不行,最后改成了這種寫法

$.ajax({
    url:"/admin/del",
    dataType:"json",
    data:{id: id},
    type:"POST",
    success:function(req){
        //請求成功時處理
    },
});

 調試走了后台控制器的方法,但還是沒走到function里,去掉【dataType:"json",】后可以了。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

關於dataType:

1、請求成功且返回了數據但不進success:function(){}:https://blog.csdn.net/weixin_34357436/article/details/92380485

JQuery 中ajax的一點其它的認識: 客戶端發起請求,得到服務器端的相應是200(正確拿到服務器響應的數據)沒有問題.此時在判斷進入success 對應的回調函數還是進入到error對應的回調函數之前,可能會校驗一些東西:

a.返回的每條數據是否是dataType中定義的數據類型。如果有部分數據不是或者哪怕一條數據沒有嚴格的按照dataType定義的類型,程序就會進入到error:function(){****};

b.請求的域和當前域是否是同一域,如果不是同一域也十分有可能進入error:function(){***}。

2、沒有設置dataType會解析為字符串:https://blog.csdn.net/u011277123/article/details/53404169

3、datatype含義:https://blog.csdn.net/u013476542/article/details/61414401/

其中,text和xml類型返回的數據不會經過處理。數據僅僅簡單的將XMLHttpRequest的responseText或responseHTML屬性傳遞給success回調函數,

如果指定為html類型,任何內嵌的JavaScript都會在HTML作為一個字符串返回之前執行。類似的,指定script類型的話,也會先執行服務器端生成JavaScript,然后再把腳本作為一個文本數據返回。

如果指定為json類型,則會把獲取到的數據作為一個JavaScript對象來解析,並且把構建好的對象作為結果返回。為了實現這個目的,他首先嘗試使用JSON.parse()。如果瀏覽器不支持,則使用一個函數來構建。JSON數據是一種能很方便通過JavaScript解析的結構化數據。如果獲取的數據文件存放在遠程服務器上(域名不同,也就是跨域獲取數據),則需要使用jsonp類型。使用這種類型的話,會創建一個查詢字符串參數 callback=? ,這個參數會加在請求的URL后面。服務器端應當在JSON數據前加上回調函數名,以便完成一個有效的JSONP請求。如果要指定回調函數的參數名來取代默認的callback,可以通過設置$.ajax()的jsonp參數。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

關於http的put、delete等方法:https://blog.csdn.net/tankpanda/article/details/49824669

  就以前為了面試:get跟post 的區別,都會常說兩點,第一,get請求方式,不安全。post安全。第二,get請求參數內容有限制大小,post請求沒有限制。

  這是一種似是而非的答案,其實http協議定義跟這完全沒有關系!第一,get請求不安全,post請求同樣也不安全。原因基於抓包一看,就得到內容。第二,http協議從來就沒有限制過get請求內容的大小,而是瀏覽求對url地址的長度的限制,不同瀏覽器對url請求的參數內容大小會有限制。

  這根http協議定義就有點關聯啦,put/delete/get/pos依次可以對應數據庫的增、刪、改、查。所以get請求一般是查數據的,而且內容是無論請求多少,都是一樣不會發生改變的。當然,get也可以帶參數,這里狹義的認為,只要不會影響數據結構的請求方式,都是等冪請求。get請求也是http協議定義中的標准使用。

  post、put、delete自然就是不等冪請求,一般會改變數據結構。對應會發生數據結構的改變。這里如果用過Laravel框架,其中的resource路由的定義,就會這個get、post、delete、put請求方式有深刻的理解。

  同樣的url地址,同樣的參數形式,會因為請求方式的get、post、put、delete的不同,會分別發生不同的行為。得到不同的結果。

ps:讀了以后還是有點迷,http這些方法有做什么操作嗎,還是上邊說的框架根據http的方法比如delete進行了刪除操作,待以后查證吧

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

關於控制器方法返回類型:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/action-return-types?view=aspnetcore-5.0

ASP.NET Core 提供以下 Web API 控制器操作返回類型選項:

 ps:第一個特定類型看描述包括基本數據類型和引用數據類型,感覺都能返回了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM