从 jQuery 调用处理程序不起作用

本文关键字:程序 不起作用 处理 调用 jQuery | 更新日期: 2023-09-27 18:32:21

我需要从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) 文件。所以这不是任何路径问题。

我是这个处理程序文件概念的新手。我用谷歌搜索了很多,但在我的代码中找不到任何错误。

从 jQuery 调用处理程序不起作用

它在更改我传递 json 数据的方式(如 @DRAKO 所建议的那样)并从 ajax 回发调用中删除 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...
        }
    });
});

我认为您将 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");
            }
        });
    });