我需要从jQuery调用一个处理程序(ashx)文件来在运行时获取一些数据。 我的jQuery函数看起来像:
var pID = 3;
var tID = 6;
$("#Button1").click(function() {
var urlToHandler = "Controller/TestHandler.ashx";
$.ajax({
type: "POST",
url: urlToHandler,
data: "{'pID':'" + pID + "', 'tID':'" + tID + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg);
}
});
});
我的处理程序代码:
<%@ WebHandler Language="C#" Class="TestHandler" %>
using System;
using System.Web;
public class TestHandler : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
String pID = context.Request.Params["pID"];
String tID = context.Request.Params["tID"];
context.Response.ContentType = "text/plain";
context.Response.Write(pID + " " + tID);
}
public bool IsReusable
{
get {
return false;
}
}
}
问题是代码执行没有达到处理程序代码。 我可以从处理程序文件所在的同一目录中调用来自同一jQuery函数的其他Web表单(aspx)文件。所以这不是任何路径问题。
我是这个处理程序文件概念的新手。我google了很多,但在我的代码中找不到任何错误。
答案 0 :(得分:2)
改变了我传递json数据的方式(由@DRAKO建议)并从ajax post back调用中删除了contentType后,它工作了。还纠正了路径。
$("#Button1").click(function() {
var urlToHandler = "TestHandler.ashx";
$.ajax({
type: "POST",
url: urlToHandler,
data: { pID: pID, tID: tID },
dataType: "json",
success: function(msg) {
//do something with the msg here...
}
});
});
答案 1 :(得分:1)
我认为将json数据传递给处理程序的方式不正确。
还要确保处理程序的路径是正确的,并在处理程序中向控制台写一行以检查它是否被调用。试试这段代码
$("#Button1").click(function(){
$.ajax({
type: "POST",
url: "/Controller/TestHandler.ashx",
data: {pID:pID, tID:tID},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg);
},
error: function(){
alert("Error");
}
});
});