簡體   English   中英

試圖了解JQuery / Ajax Get / POST調用

[英]Trying to understand JQuery/Ajax Get/POST calls

如果我錯了,請糾正我,但據我了解,如果我要更改數據,則要使用POST;如果要檢索數據,則要使用GET。

基於該假設。

我有(MVC5)應用。

我的JavaScript

function MyLoadData(myValue) {
    $.ajax({
        method: 'POST',
        url: '/Home/GetMyData',
        contentType: 'application/json',
        dataType: 'json',
        data: JSON.stringify({ "MyValue": myValue}),
        success: function (data) {
             // Do Stuff
        }                    
    });

和我的控制器。

public JsonResult GetMyData(string myValue)
        {  // Do Stuff }

僅當我將方法設置為“ POST”時,此方法才有效;如果將其設置為“ GET”,它將仍然進行服務器調用,但不會將myValue傳遞給控制器​​。

還要注意的是,GetMyData方法上沒有數據注釋。

在這種情況下,我不應該使用GET從控制器中獲取數據嗎?

根據評論已更新:

function MyLoadData(myValue) {
    $.ajax({
        method: 'POST',
        url: '/Home/GetMyData',
        dataType: 'json',
        data: { "MyValue": myValue},
        success: function (data) {
             // Do Stuff
        }                    
    });

POSTGET方法都可以將myValue傳遞給控制器​​。

  • GET-從指定資源請求數據
  • POST-將要處理的數據提交到指定的資源

GET基本上僅用於從服務器獲取(檢索)某些數據。 注意:GET方法可能返回緩存的數據。

POST也可以用於從服務器獲取一些數據。 但是,POST方法從不緩存數據,通常用於與請求一起發送數據。

GETPOST之間的主要區別在於POST也將提交表單數據。 在您的示例中,可以通過將?MyValue=<myValue>附加到URL來使用GET,WebAPI會將值分配給Action的參數。

如果GET請求需要工作,請使用以下代碼塊:

function MyLoadData(myValue) {
$.ajax({
    method: 'GET',
    url: '/Home/GetMyData?myValue=test',
    success: function (data) {
         // Do Stuff
    }                    
});

基本上,您可以使用GET或POST來獲取數據。 但是在GET中,數據是通過查詢字符串傳遞的。 在POST中,它既可以通過查詢字符串也可以通過正文傳遞。

一種使用POST的現實情況-假設您的方法要求使用Customer參數,並且需要將Customer對象作為參數發送,則可以通過body發送Customer對象的json表示形式,但不能通過GET發送。

另一個原因是安全性,如果使用GET,則可以通過瀏覽器調用方法。但是,如果使用POST,則不能直接調用該方法。

這些是重要的區別。有關更多區別,請參見此鏈接-http: //www.diffen.com/difference/GET_(HTTP) _vs_POST_( HTTP)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM