$.post,$.ajax: 都是前台向後台發送非同步請求
1.$.ajax
這個方法預設使用 GET 方式來傳遞的,如果[data]參數有傳遞資料進去,就會自動轉換為POST方式的。
$(function () {
var appointment = {
Name: "galen.guo",
Age: 20
};
$('#tty').click(function () {
var url = 'TestJson';
//前台向action傳遞一個json序列化對象
$.ajax({
url: '@Url.Action("TestJson")',
type: 'POST',//指定以post方式
data: JSON.stringify(appointment), //將對象序列化成json格式,不能省略
dataType: 'json',//資料格式
processData: false,
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert('ok');
}
});
});
});
----processData:(預設: true) 預設情況下,發送的資料將被轉換為對象(技術上講並非字串) 以配合預設內容類型 "application/x-www-form-urlencoded"。如果要發送 DOM 樹資訊或其它不希望轉換的資訊,請設定為 false。
後台代碼:
public class Appointment
{
public String Name { get; set; }
public String Age { get; set; }
}
[HttpPost]
public JsonResult TestJson(Appointment app)
{
return Json("");
}
2.$.post
原形:jQuery.post( url, [data], [callback], [type] ) :使用POST方式來進行非同步請求
其中的[type]參數:(可選)Type of data to be sent, 預設是string,可以指定為JSON,XML,等
使用:$.post(url, { userId: userId, "key": keyValue }, function (data) { });//向action傳遞的參數是健值對的形式,data 就是action中返回的值,此例中就是"hello world"
其中url指定要調用的action,如'@Url.Action("Test")',
Test action 聲明:
[HttpPost]
public JsonResult Test(Int32 userId, String key)
{
.........................
return("hello world");
}
其實,$.post最終還是$.ajax實現的,源碼如下:
function (url, data, callback, type) {
if (jQuery.isFunction(data)) {
callback = data;
data = {};
}
return jQuery.ajax({
type: "POST",
url: url,
data: data,
success: callback,
dataType: type
});