次のjQuery AJAXコールを使用してASP.Netページを作成しました。jQuery AJAX ASP.Netページにデータをポストするための呼び出し(Getではなく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');
}
});
私が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"];
}
UPDATE 1:スティーブンの答えは、この、のprocessRequestを行い、特にアプローチへの最良のアプローチです。しかし、私は、データをASP.Netに、通常の伝統的な方法、つまりRequest ["vendorId"]などでポストすることができる小さなテクニックを見つけました。jQueryのajaxリクエストからのそのようなデータのポスティングを有効にするには、以下の2点は、お使いのjQueryのAJAX呼び出しに適用されていることを確認してください。
- コンテンツタイプは、あなたの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のコードビハインドでは、Request ["vendorId"]やRequest ["businessUnit"]などの通常のASP.Net構文を使用してアクセスできます。
私もこの方法で試してみましたが、何かが私のために働いていません。誰でも私を助けることができます。 – user1120998