我正在尝试执行以下操作: - 通过JQuery调用处理程序上的函数, - 完成治疗后,重定向到页面。
问题是页面似乎没有加载。
为了最清楚,我制作了以下代码。
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication3._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript" src="js/jquery-ui.js"></script>
<script type="text/javascript" src="js/jquery.js""></script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<script type="text/javascript" language="javascript">
function CallHandler() {
console.info("Entering CallHandler");
$.ajax({
type: 'POST',
url: "Handlers/MyFunction.ashx",
data: { helloworld: 'hello world'},
success: function (data) {
console.info(data);
}
});
}
</script>
<asp:HyperLink runat="server" ID="linkForTest" onclick='CallHandler();' Text='Click Me' />
</asp:Content>
我的处理程序如下:
/// <summary>
/// Summary description for MyFunction
/// </summary>
public class MyFunction : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write(context.Request["HelloWorld"]);
context.Response.Redirect("~/Login/WebForm1.aspx");
}
public bool IsReusable
{
get
{
return false;
}
}
}
它应该调用我的页面“Login / Webform1.aspx”,但它什么都不调用。 然而,Firebug似乎没有找到问题......只是它一直在尝试加载页面......并且失败了。
有什么想法吗?
答案 0 :(得分:1)
我非常确定响应ajax请求的重定向不会重定向主页。有几种方法可以解决这个问题。一种方法是,您可以执行客户端重定向,以响应处理程序中的某种通知或状态代码。
答案 1 :(得分:0)
它在循环?
是否重定向,即使它在页面上的重定向到?
也许你需要在重定向之前检查context.Request.Url
答案 2 :(得分:0)
您正在传递处理程序helloworld
并将其作为HelloWorld
读取,看看是否为空引用错误?另外,在$ .ajax调用上使用错误处理程序,看看它是否被抛出。
console.info("Entering CallHandler");
$.ajax({
type: 'POST',
url: "Handlers/MyFunction.ashx",
data: { HelloWorld: 'hello world'},
success: function (data) {
console.info(data);
},
error: function (data) {
console.error(data);
}
});
}
答案 3 :(得分:0)
重定向时,您要重定向的页面内容将作为ajax结果传递。
答案 4 :(得分:0)
您可以通过使用javascript的客户端调用来调用response.redirect的另一种方式
console.info("Entering CallHandler");
$.ajax({
type: 'POST',
url: "Handlers/MyFunction.ashx",
data: { HelloWorld: 'hello world'},
success: function (data) {
window.location.href ="WebForm1.aspx" ;
},
error: function (data) {
console.error(data);
}
});
}