Kontext.Antwort.Umleiten von ein handler funktioniert nicht
Ich versuche, Folgendes zu tun :
- Call-thru-JQuery-eine Funktion, eine Prozedur,
- sobald die Behandlung erfolgt ist, die Umleitung zu einer Seite.
Das Problem ist, dass die Seite scheint nicht zu laden.
Machte ich den folgenden code, um klarsten.
<%@ 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>
und mein handler ist wie folgt :
///<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;
}
}
}
Sollte es rief meine Seite "Login/Webform1.aspx", aber es fordert nichts.
Aber Firebug dont zu finden, scheint ein Problem... nur es hält zu versuchen, um eine Seite zu laden... Und scheiterte.
Irgendwelche Ideen ?
InformationsquelleAutor PetersLast | 2012-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir ziemlich sicher, dass eine Umleitung in der Antwort auf eine ajax-Anfrage wird nicht die Umleitung der host-Seite. Es gibt mehrere Möglichkeiten, dies zu behandeln. Eine Möglichkeit ist, dass Sie tun können, eine client-seitige Umleitung in Reaktion auf irgendeine Art von Benachrichtigung oder status-code von Ihrem handler.
InformationsquelleAutor Kenneth Ito
es eine Schleife?
ist es umleiten auch wenn er auf der Seite seiner umleiten?
vielleicht müssen Sie den Kontext prüfen.Anfrage.Url vor der Umleitung
also, wenn Sie schon auf der Seite, die Sie umleiten möchten, rufen Sie nicht die redirect if(!Anfrage.Url.EndsWith("Login/WebForm1.aspx")) Kontext.Antwort.Redirect("~/Login/WebForm1.aspx");
Ich bin nicht auf dieser Seite. Ich bin auf der Seite tatsächlich : "~/Default/Default.aspx" und ich wollen, gehen Sie zu "~/Login/Login.aspx".
InformationsquelleAutor Anthony Johnston
Sind Sie vorbei die handler
helloworld
und Lesen es alsHelloWorld
sehen, ob ein null-Verweis-Fehler? Auch, verwenden Sie einen Fehler-handler auf den $.ajax-aufrufen und sehen, ob es ausgelöst wird.Ich verstehe nicht ganz den Zweck der schreiben von "Hello World" ist, dann umleiten der Anfrage, versuchen Sie zu leiten den Benutzer auf die login-Seite? wenn ja, dann sollten Sie reagieren mit "nicht autorisiert" und eventuell den Standort zu melden, dann haben javascript legen
location.href
. Wenn Sie versuchen, um das dynamische laden der login-Formular in ein div oder so etwas, dann können Sie versuchenServer.Transfer
stattResponse.Redirect
Hello world ist nur ein Beispiel von meinem code. Eine Art zu schreiben, ich bin die übertragung von Daten ohne Problem. Was in echt meine Seite tut, es ist die Registrierung eines Benutzer-thru Facebook-Konto, und wenn er einmal registrieren angemeldet, es ist eigentlich eine Umleitung auf eine Standard-Seite können Sie nicht zugreifen, wenn Sie nicht Mitglied sind. Aber ich wollte ein einfaches Beispiel, das ist, warum ich schrieb dieses Beispiel.
Ich würde genau das tun, was Sie sagten, Sie tun here
Hoffe, es wird eine bessere Lösung... Dank jedoch für Eure Hilfe.
InformationsquelleAutor Joe Flateau
beim umleiten, der die Inhalte der Seite, die Sie umleiten möchten, weitergegeben werden als ajax-Ergebnis.
InformationsquelleAutor legendJSLC