Mam następujące wywołanie jQuery AJAX do strony ASP.Net.jQuery AJAX Zaproszenie do opublikowania danych na stronie ASP.Net (nie Uzyskaj 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');
}
});
Kiedy próbuję pobrać z obiektu Request, opublikowanych danych, nie pojawia się. Mój kod strony aspx jest poniżej. Przesyłam każdą z opublikowanych danych w formacie Json do strony, ale nie pojawia się ona w kodzie strony. Czy jest jakieś dodatkowe ustawienie w wywołaniu ajax jQuery, którego mi brakuje?
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: odpowiedź Szczepana jest najlepszym podejściem do tego, zwłaszcza że podejście robi ProcessRequest. Jednak znalazłem małą sztuczkę, która pozwoli na publikowanie danych w ASP.Net w zwykły tradycyjny sposób, np. Request ["vendorId"] itd. Aby włączyć takie wysyłanie danych z dowolnego żądania ajax jQuery, wystarczy po prostu upewnij się, że poniższe 2 punkty są stosowane do jQuery ajax rozmowy:
- The-typu treści powinny być pozostawione na swoim jQuery wywołanie ajax Albo jeśli chcesz umieścić go to powinno nie można ustawić do "application/json; charset = utf-8", ale do "application/x-www-form-urlencoded; charset = UTF-8". Typ zawartości, zgodnie z moim rozumieniem, informuje stronę ASP.Net o typie danych, które są wysyłane, a nie o typie danych oczekiwanych od strony.
- Część danych jQuery ajax nie powinna zawierać nazw danych zawartych w cytatach. Zatem dane: {"venorId": "AD231", "businessUnit": "123"} należy zastąpić danymi: {vendorId: "AD231", businessUnit: "123"}. W tym przykładzie nazwy danych to vendorID i businessUnit, do których można uzyskać dostęp za pomocą kodu ASP.Net za pomocą zwykłej składni ASP.Net, takich jak Request ["vendorId"] i Request ["businessUnit"].
Jestem również wypróbowany w ten sposób, wszystko nie działa dla mnie. Czy ktoś może mi pomóc. – user1120998