Подумайте о включении вашей функции вручную в цикл for
. Если эта функция вызывается в нескольких циклах, определите ее как макрос:
#define f()\
printf("a: %d", a);\
break;
Наличие некоторого кода для просмотра поможет диагностировать проблему. Вы пробовали что-то подобное?
Код jQuery:
$.post('test.ashx',
{key1: 'value1', key2: 'value2'},
function(){alert('Complete!');});
Затем в методе ProcessRequest ()
вы должны иметь возможность:
string key1 = context.Request.Form["key1"];
Вы также можете проверить тип запроса в ProcessRequest () для устранения проблемы.
if(context.Request.RequestType == "POST")
{
// Request should have been sent successfully
}
else
{
// Request was sent incorrectly somehow
}
Данные POST, которые вы отправляете своему обработчику HTTP, должны быть в формате строки запроса a = b & c = d
. И вы можете получить его на стороне сервера, используя Request ["a"]
(вернет b
) и так далее.
У меня была такая же проблема, и в конце концов я понял, что проблема в установке типа содержимого как "json"...
contentType: "application/json; charset=utf-8"
Это строка, которую некоторые популярные учебники предлагают добавить в вызов $ajax, и она хорошо работает с ASPx WebServices, но почему-то не работает для HttpHandler, использующего POST.
Трудно уловить, поскольку значения в строке запроса работают нормально (еще один прием, встречающийся в вебе, хотя использовать POST для этого не имеет особого смысла).
У меня тоже была такая же проблема. Это была проблема клиента / AJAX. Мне пришлось установить заголовок запроса вызова AJAX ContentType на
application/x-www-form-urlencoded
, чтобы он работал.
Сталкивался с похожей проблемой. После исправления всех ошибок я пропустил еще одну вещь в web.config
— изменить глагол как *
ИЛИ GET,POST
. После этого все работало нормально.
<httpHandlers>
...
<add verb="*" path="test.ashx" type="Handlers.TestHandler"/>
</httpHandlers>