Tôi có lời gọi jQuery AJAX sau đây tới trang ASP.Net.jQuery AJAX Gọi để đăng dữ liệu lên trang ASP.Net (không Nhận nhưng POST)
$.ajax({
async: true,
type: "POST",
url: "DocSummaryDataAsync.aspx", //"DocSummary.aspx/GetSummaryByProgramCount",
contentType: "application/json; charset=utf-8",
data: kendo.stringify({ vendorId: supplierId, businessUnit: busUnit, productSegmentId: prodSegmentId, programId: progId, productManagerId: prodManagerId, companyIds: compIds, expired: exp.toString(), requestType: 'TotalCount' }),
success: function (msg) {
// alert('in success of getcount');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
// alert('in failure of getcount');
}
});
Khi tôi cố gắng truy xuất từ đối tượng Yêu cầu, dữ liệu đã đăng, nó không hiển thị. Mã trang aspx của tôi như sau. Tôi đang gửi từng dữ liệu được đăng ở định dạng Json đến trang, nhưng nó không hiển thị trong mã phía sau trang. Có một số cài đặt bổ sung trong cuộc gọi jQuery ajax mà tôi bị thiếu không?
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "application/json";
string requestType = Request.Params["requestType"];
//populate variables from posted data
string vendorId = Request.Params["vendorId"];
string businessUnit = Request.Params["businessUnit"];
string productSegmentId = Request.Params["productSegmentId"];
string commitmentProgramId = Request.Params["programId"];
string productManagerId = Request.Params["productManagerId"];
string companyIds = Request.Params["companyIds"];
string expired = Request.Params["expired"];
}
UPDATE 1: câu trả lời của Stephen là cách tiếp cận tốt nhất để này, đặc biệt là cách tiếp cận mà không ProcessRequest. Tuy nhiên, tôi đã tìm thấy một mẹo nhỏ cho phép dữ liệu được đăng lên ASP.Net theo cách thông thường như Yêu cầu ["vendorId"] vv. Để cho phép đăng dữ liệu từ bất kỳ yêu cầu ajax jQuery nào, bạn chỉ cần chắc chắn rằng 2 điểm sau đây được áp dụng cho jQuery của bạn gọi ajax:
- các content-type nên được gạt ra khỏi cuộc gọi ajax jQuery của bạn Hoặc nếu bạn muốn bao gồm nó sau đó nó nên không được thiết lập đến "application/json; charset = utf-8" nhưng để "application/x-www-form-urlencoded; charset = UTF-8". Loại nội dung, theo sự hiểu biết của tôi là nói cho trang ASP.Net loại dữ liệu đang được gửi và không phải là loại dữ liệu được mong đợi của trang.
- Phần dữ liệu của jQuery ajax không được có tên dữ liệu được đính kèm trong dấu ngoặc kép. Vì vậy, dữ liệu: {"venorId": "AD231", "businessUnit": "123"} phải được thay thế bằng dữ liệu: {vendorId: "AD231", businessUnit: "123"}. Trong ví dụ này, tên dữ liệu là vendorId và businessUnit, có thể được truy cập trong mã ASP.Net của bạn bằng cách sử dụng cú pháp ASP.Net thông thường như Request ["vendorId"] và Request ["businessUnit"].
Tôi cũng đã thử cách này, mọi thứ không hiệu quả với tôi. Ai giúp tôi với. – user1120998