ASP.Net ページへの次の jQuery AJAX 呼び出しがあります。
$.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: Stephen の答えは、これに対する最良のアプローチ、特に ProcessRequest を実行するアプローチです。ただし、Request["vendorId"] などの通常の従来の方法でデータを ASP.Net に投稿できるようにする小さなトリックを見つけました。jQuery ajax リクエストからのデータの投稿を有効にするには、次のようにする必要があります。次の 2 つの点が jQuery ajax 呼び出しに適用されていることを確認してください。
- content-type は jQuery ajax 呼び出しから除外する必要があります。または、それを含める場合は、「application/json; charset=utf-8」ではなく、「application/x-www-form-urlencoded」に設定する必要があります。 ; 文字セット=UTF-8". 私の理解によると、コンテンツタイプは、ページに期待されるデータのタイプではなく、送信されるデータのタイプをASP.Netページに伝えています。
- jQuery ajax のデータ部分では、データ名を引用符で囲んではなりません。したがって、data: {"venorId":"AD231","businessUnit":"123"} は data: {vendorId:"AD231",businessUnit:"123"} に置き換える必要があります。この例では、データ名は vendorId と businessUnit であり、Request["vendorId"] や Request["businessUnit"] などの通常の ASP.Net 構文を使用して、ASP.Net コード ビハインドでアクセスできます。