繁体   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