在一个应用程序中,我使用Jquery和MVC4,我需要在服务器上查询数据。我理解JQuery为Ajax请求提供了多种方法,但我没有得到应该使用哪种特定方法?
我将传递参数并接收一些数据,并且在请求失败或超时的情况下我需要做一些事情。请告知我应该采用哪种方法。
干杯
答案 0 :(得分:4)
关于 POST vs GET 困境,这是一个设计问题,而不是可用性问题。如您所知,jQuery允许您发出 POST 和 GET 请求。
我列出了使用 GET 请求的一些内涵:
This question提供了有关该主题的更多信息,Wikipedia on HTTP protocol也是如此。
如果您不确定您的AJAX API是否满足 GET 请求的要求,请使用 POST 。
答案 1 :(得分:1)
使用 $.ajax
var fruit = 'Banana';
$.ajax({
url: ajaxurl,//your url
type"'POST',//also can set GET
data: {//passing parameter
'action':'example_ajax_request',
'fruit' : fruit
},
success:function(data) {
// This outputs the result of the ajax request
console.log(data);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
答案 2 :(得分:0)
如果请求中的任何数据发生变化,我应该使用post方法。如果只获取一些数据,请使用get方法 从技术上讲,您可以使用任何您想要的方法。在语法上它会起作用,但在语义上它是错误的。如果您更改任何方法的状态,则应使用POST方法,因为可以调用GET方法,只需在浏览器地址栏中键入请求URL即可。 例如,您在控制器中有一个允许get方法调用的delete方法。网页抓取工具(谷歌或任何搜索引擎)点击您的网页:http://myurl.com/user/delete/1并繁荣。从您的数据库中删除ID为1的用户 当我说改变意味着你在持久数据上运行删除,更新或插入方法时,你应该使用post方法,或者在webapi的情况下使用适当的方法(DELETE,PUT,PATCH,POST)。 我认为this文章可以帮助深入挖掘 little 。
答案 3 :(得分:0)
为了从服务器端获取数据,我们应该使用GET,而为了更新服务器端的数据,我们应该使用POST方法。
尝试像这样使用。
function yourFunc() {
$.ajax({
type : 'POST',
url : 'yourcontroller/action',
contentType : "application/json; charset=utf-8",
dataType : 'json',
data : param,
async : false,
cache: false,
success : function(dataList) {
//alert("dataList ---> "+dataList);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
//alert(XMLHttpRequest + " - " + errorThrown);
}
});
}
像这样在param变量中传递参数。
var param;
param={param1:"val",param2:"val", param3:"val"};
希望这会对你有所帮助。
答案 4 :(得分:0)
由于您正在请求某些数据,并且作为响应,您从数据库中获取了一些数据,因此您可以使用Ajax post或getJson。我觉得使用getJson很好,你将序列化数据并将其发送回视图,或者你只需使用MVC本身提供的JsonResult。
Http Get和Http Post之间的区别总是令许多开发人员感到困惑。从指定资源获取方法请求数据,post方法将要处理的数据提交到特定资源。通过get方法传递的参数附加在url和post方法参数中。
<script type="text/javascript">
$(document).ready(function () {
$('#btnGetValue').click(function () {
//Requesting controller action from getJson
$.getJSON("/Home/GetJsonData", null, function (data) {
var div = $('#ajaxDiv');
div.html("<br/> " + "Persons received from server: " + "<br/>");
$.each(data, function (i, item) {
//This is where you'll get all the items returned from the controller.
printPerson(div, item);
});
});
});
});
</script>
并在控制器中,
public JsonResult GetJsonData()
{
var persons = new List<Person>
{
new Person{Id = 1, FirstName = "F1",
LastName = "L1",
Addresses = new List<Address>
{
new Address{Line1 = "LaneA"},
new Address{Line1 = "LaneB"}
}},
new Person{Id = 2, FirstName = "F2",
LastName = "L2",
Addresses = new List<Address>
{
new Address{Line1 = "LaneC"},
new Address{Line1 = "LaneD"}
}}};
return Json(persons, JsonRequestBehavior.AllowGet);
}
您可以使用getJson来加载下拉列表,填充其他控件,列表或其他内容。 进一步阅读getJson和Json结果是JSON with MVC 4 JsonResult