При выполнении вызова Ajax с использованием jquery я обычно объявляю объект данных для отправки в параметре данных jQuery ajax ():
var data = { "one": "1:, "two": "2", ... }
.ajax({
url: "myHandler.ashx",
data: data,
...
})
Мой общий обработчик C # может затем ссылаться на эти данные как частьколлекция Params []:
string One = context.Request.Params["One"]; // "1"
string Two = context.Request.Params["Two"]; // "2"
Однако в этом проекте мне необходимо использовать сам объект XMLHttpRequest. Итак, я построил следующее (отредактировано для краткости):
var xhr = new XMLHttpRequest();
xhr.open(data.Type, data.Handler, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status == 200) {
// do something with "xhr.response";
}
}
}
xhr.send(JSON.stringify(data));
Проблема в том, что данные отправляются без имени. Итак, в моем C # универсальном обработчике я не знаю, о чем просить. context.Request.Params["One"]
является нулевым или пустым. Я сбросил всю коллекцию Params [] в окно отладки и нигде не вижу. То же самое для всей коллекции Request [].
Я не могу найти строковые данные JSON, которые были отправлены в вызове xhr.send ().
Итак, вопрос в том, как сделать ссылку в моем универсальном обработчике C #к данным, которые были отправлены в xhr.send(JSON.stringify(data))
вызове?