我试图调用我的自定义Htpp Handler并希望传递一些参数但我无法在http Handler进程请求方法中检索这些param的值。 我使用像..的代码。
在客户端
$.ajax({
url: 'VideoViewValidation.ashx',
type: 'POST',
data: { 'Id': '10000', 'Type': 'Employee' },
contentType: 'application/json;charset=utf-8',
success: function (data) {
debugger;
alert('Server Method is called successfully.' + data.d);
},
error: function (errorText) {
debugger;
alert('Server Method is not called due to ' + errorText);
}
});
这是我的自定义http Handler
public class VideoViewValidation : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string videoID = string.Empty;
string id = context.Request["Id"];
string type = context.Request["Type"];
}
}
请告诉我问题出在哪里。
答案 0 :(得分:6)
删除“contentType:'application / json; charset = utf-8'”并添加“dataType:'json'”
答案 1 :(得分:4)
您需要删除行contentType: 'application/json;charset=utf-8'
,以便$ .ajax()使用默认值contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
(在docs for $.ajax中指定)。通过单独执行此操作,您的代码示例应该可以正常工作(dataType参数实际上指定了您希望从服务器返回的数据类型)。
以最简单的形式,您可以像这样编写$ .ajax()调用:
$.ajax({
url: 'VideoViewValidation.ashx',
data: { 'Id': '10000', 'Type': 'Employee' },
});
在这种情况下,请求将通过GET进行,参数将通过查询字符串发送,但它仍然适用于context.Request
。
答案 2 :(得分:0)
您的jquery正在发送POST数据,因此您需要查看Request.Form [“Id”]等
public class VideoViewValidation : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string videoID = string.Empty;
string id = context.Request.Form["Id"];
string type = context.Request.Form["Type"];
}
}
答案 3 :(得分:0)
您的数据使用ajax调用发送到处理程序(而不是来自典型的表单提交)。要检索数据,您只需要context.Request [“Id”]。这应该够了吧。