У меня есть следующий вызов jQuery AJAX на страницу ASP.Net.
$.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');
}
});
Когда я пытаюсь извлечь из объекта Request, опубликованные данные, он не отображается. Мой код страницы aspx приведен ниже. Я отправляю каждую опубликованную информацию в формате Json на страницу, но она не отображается на странице кода. Есть ли дополнительные настройки в jQuery ajax-вызове, который мне не хватает?
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"];
}
ОБНОВЛЕНИЕ 1: Ответ Стивена - лучший подход к этому, особенно подход, который делает ProcessRequest. Тем не менее, я нашел небольшой трюк, который позволит публиковать данные в ASP.Net обычным образом, например, Request [ "vendorId" ] и т.д. Чтобы включить такую отправку данных из любого jQuery ajax-запроса, вам просто нужно убедитесь, что к вашему jQuery ajax-вызову применяются следующие 2 точки:
- Тип содержимого должен быть исключен из вашего jQuery ajax-вызова. Если вы хотите включить его, он должен не устанавливать "application/json; charset = utf-8", но "application/x-www-form-urlencoded; charset = UTF-8". Content-type, согласно моему пониманию, сообщает странице ASP.Net тип данных, которые отправляются, а не тип данных, которые ожидаются на странице.
- Часть данных jQuery ajax не должна содержать имена данных, заключенные в кавычки. Поэтому данные: { "venorId": "AD231", "businessUnit": "123" } должны быть заменены данными: {vendorId: "AD231", businessUnit: "123" }. В этом примере имена данных являются vendorId и businessUnit, к которым можно получить доступ в коде ASP.Net с использованием обычного синтаксиса ASP.Net, такого как Request [ "vendorId" ] и Request [ "businessUnit" ].