0

次のようなオブジェクトの配列を作成しています。

var postData = [];

$.each(selectedFields, function (index, value) {
    var testTitle = 'testing ' + index;
    postData.push({title: testTitle, title2 : testTitle});        
}

それから私はそれをこのように投稿します(私はいくつかの異なるアプローチを試したことに注意してください):

$.post('SaveTitlesHandler.ashx', { form : postData }, function (data) {
    console.log(data);
});

次に、ハンドラーでデータを取得しようとします...

public class SaveTitlesHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        string json = context.Request.Form.ToString();
    }

}

リクエストから適切なjsonを取得できないようです。誰かアイデアがありますか?

乾杯。

twD

4

1 に答える 1

11

JSONを投稿していません。を使用してapplication/x-www-form-urlencodedいます。したがって、ハンドラー内で個々の値にアクセスできます。

public void ProcessRequest(HttpContext context)
{
    var title1 = context.Request["form[0][title]"];
    var title2 = context.Request["form[0][title2]"];

    var title3 = context.Request["form[1][title]"];
    var title4 = context.Request["form[1][title2]"];

    ...
}

実際のJSONをPOSTする場合は、次のものが必要です。

$.ajax({
    url: 'SaveTitlesHandler.ashx',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(postData),
    success: function(result) {
        console.log(result);
    }
});

次に、ハンドラー内で要求入力ストリームから読み取ります。

public void ProcessRequest(HttpContext context)
{
    using (var reader = new StreamReader(context.Request.InputStream))
    {
        string json = reader.ReadToEnd();
    }
}

このJSON.stringifyメソッドは、javascriptオブジェクトをJSON文字列に変換します。これは、最新のブラウザーに組み込まれているネイティブメソッドです。古いブラウザをサポートしたい場合は、 json2.jsを含める必要があるかもしれません。

于 2011-06-21T06:46:08.537 に答える