2013-06-12 16 views
10

Hallo Ich versuche, eine Webmethode mit AJAX von einer aspx-Seite auszuführen. Im Grunde möchte ich auf eine andere Aspx-Seite mit einer Abfrage-Zeichenfolge umleiten, aber ich möchte es von <a href> tun, da es Teil eines Jquery-Menüs ist.kann Response.Redirect nicht innerhalb einer statischen Methode aufrufen

von dem, was ich gelernt habe, kann ich nur Ajax verwenden, um statische Webmethoden aufzurufen, aber ich kann nicht von meiner statischen Funktion umleiten.

Visual Studio markiert es in einer roten Linie zu sagen: „eine Objektreferenz für die nicht-statische Feldmethode erforderlich ist oder Eigenschaft System.Web.HttpResponse.Redirect (string)“

hier ist der Ajax-Aufruf :

function redirect_to_profile() { 
    $.ajax({ 
     type: "POST", 
     url: "personal_profile.aspx.cs.aspx/redirect_to_profile", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (res) { 
      alert("success"); 
     }, 
     error: function (res, msg, code) { 
      // log the error to the console 
     } //error 
    }); 
} 

hier ist die a href:

<a onclick="redirect_to_profile()">Personal Profile</a> 

hier ist der Webmethod innerhalb der personal_profile.aspx

[WebMethod] 
public static void redirect_to_profile() 
{ 

    dbservices db=new dbservices(); 
    string user = HttpContext.Current.User.Identity.Name; 
    string id = db.return_id_by_user(user); 

    HttpResponse.Redirect("personal_profile.aspx?id="+id); 
} 
+1

1) Es gibt kein statisches 'Response'. 2) Das willst du sowieso nicht. Sie müssen mit dem JS sprechen. – SLaks

+1

Ich habe versucht, damit zu reden, es wird nicht antworten:) Was meinst du damit? – Dvirski

+1

Sie müssen ein Ergebnis zurückgeben, das dem JS sagt, was zu tun ist. – SLaks

Antwort

21

Sie müssen die konstruierten URL an den Client zurück:

public static string redirect_to_profile() 
{ 
    dbservices db=new dbservices(); 
    string user = HttpContext.Current.User.Identity.Name; 
    string id = db.return_id_by_user(user); 
    return "personal_profile.aspx?id="+id; 
} 

Dann mit Hilfe von JavaScript in der success Funktion der AJAX Anruf, stellen Sie den Standort ein:

window.location = res; 

Oder vielleicht:

window.location = res.d; 
+0

Danke! funktioniert super – Dvirski

+0

Danke für diese @Grant! Was bedeutet ".d"? Die Antwort selbst ist nur ein Objekt, während das '.d' scheint, den Zeichenfolgenwert zu bekommen ... –

+0

Danke viel Grant. 'res.d' hat den Trick für mich –

2

Statt HttpResponse.Redirect tun Sie können diese URL senden, die Sie Javascript (Antwort auf die Ajax-Aufruf) generiert haben und dann Javascript-Code verwenden, um zu umleiten.

3

Sie benötigen eine Web-Methode haben, um die ID des Benutzers übergeben zurück, dessen Profil Sie umleiten möchten, dann in Ihrem jQuery Erfolg Rückruf der window.location auf den Pfad und die Query-String, wie folgt festgelegt:

function redirect_to_profile() { 
    $.ajax({ 
     type: "POST", 
     url: "personal_profile.aspx.cs.aspx/redirect_to_profile", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (res) { 
      // Redirect to personal_profile.aspx passing it the ID we got back from the web method call 
      window.location = "personal_profile.aspx?id=" + res; 
     }, 
     error: function (res, msg, code) { 
      // log the error to the console 
     } //error 
    }); 
} 

[WebMethod] 
public static string redirect_to_profile() 
{ 
    dbservices db=new dbservices(); 
    string user = HttpContext.Current.User.Identity.Name; 
    return db.return_id_by_user(user); 
} 
0

Try this:

function myFun(a) { 
      var s = null; 
      var em = document.getElementById(a + 'productno'); 
      if (em != null) 
       PageMethods.setSession(em.innerText); 
      window.location.assign("/Product%20Details.aspx"); 


     } 
+2

Nur der Code ohne Beschreibung ist nicht ausreichend. Benutzer konnten keine Beziehung zwischen Frage und Antwort finden. Außerdem denke ich, dass diese Antwort völlig unabhängig von der Frage ist. – QMaster

Verwandte Themen