2016-06-07 10 views
0

Das ist seltsam. Meine onSuccess() Funktion in der JavaScript-Datei gibt einen massiven HTML-Code meines gesamten Webseite anstelle des Wertes kehre ich eigentlich von meinem C# WebMethodASP.NET PageMethod onSuccess-Funktion gibt einen HTML-String zurück

1) ich Visual Studio 2015 bin auf Windows 10

2) Beim Debugging behielt ich einen Haltepunkt bei der SignupAccount C# -Methode. Der Haltepunkt wurde nicht getroffen. Es ist zu diesem Punkt nicht gekommen. ABER die onSuccess Funktion wurde

genannt

Hier ist eine Erklärung:

ASP.NET Web Form HTML:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <!--Code--> 
</head> 
<body class="account2 signup" data-page="signup"> 
    <!--Code--> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager> 

    <input type="text" name="firstname" id="firstname" placeholder="First Name" required autofocus> 

    <input type="text" name="lastname" id="lastname" placeholder="Last Name" required autofocus> 

    <button type="submit" onclick="signup()" id="submit-form" class="btn btn-lg btn-dark btn-rounded" data-style="expand-left">Sign In</button> 

    <script src="JS/Account.js"></script> 
    </form> 
</body> 
</html> 

WebMethod in C# -Code-Behind:

[WebMethod] 
public static string SignupAccount(string fname, string lname) 
{ 
    return "OK"; 
} 

Javascript:

function signup() { 
    var fname = document.getElementById("firstname").value; 
    var lname = document.getElementById("lastname").value; 

    PageMethods.SignupAccount(fname, lname, onSuccess, onFailure); 

    function onSuccess(val) { 
     alert(val); 
     //Technically, this should display "OK". But instead it displays a HTML String 
     //of my entire Web Page starting from the <html> tag to the end 
    } 

    function onFailure() {} 
} 

Warum geschieht das? Ich glaube, das Verfahren und der Code sind korrekt. Hat das etwas mit Visual Studio zu tun?

EDIT

Dies ist die Antwort, die ich von der onSuccess Funktion erhalten

http://pastebin.com/6MjAFPY9

+0

Sie sehen einen XHR-Eintrag für SignupAccount im Browser Developer Tools -> Network Tab? –

+0

@DhananjayaKuppu Nein, ich sehe keinen Eintrag dort. Ich habe versucht, ein neues Web-Formular mit nur einer Schaltfläche und einer Web-Methode zu erstellen, und ich bekomme immer noch diese massive HTML-Zeichenfolge als onSuccess Rückgabewert.Ich denke, es gibt ein Problem mit der Config – Dinuka

+0

es könnte doppelt zu: [Post] (http://stackoverflow.com/questions/10658061/calling-asp-net-page-method-from-javascript-not-working) –

Antwort

0

I-Projekt an der Maschine erstellt, Code arbeiten unter:

<body> 
<form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager> 

    <asp:TextBox ID="firstname" runat="server" /> 
    <asp:TextBox ID="lastname" runat="server" /> 

    <asp:Button ID="btn" OnClientClick ="signup();return false;" runat="server" text="Call PageMethod" /> 

</form> 

<script> 
    function signup() { 
     var fname = document.getElementById("firstname").value; 
     var lname = document.getElementById("lastname").value; 

     PageMethods.SignupAccount(fname, lname, onSuccess, onFailure); 

     function onSuccess(val) { 
      alert(val); 
      //Technically, this should display "OK". But instead it displays a HTML String 
      //of my entire Web Page starting from the <html> tag to the end 
     } 

     function onFailure() { } 
    } 
</script> 

-Code hinter:

[System.Web.Services.WebMethod] 
    public static string SignupAccount(string fname, string lname) 
    { 
     return "OK"; 
    } 

PS: Stellen Sie sicher, Sie haben keine JavaScript-Fehler auf der Seite. Hoffe das hilft!

+0

Ich kopierte den exakt gleichen Code und ich bekam immer noch die gleiche Antwort: http://pastebin.com/6MjAFPY9 – Dinuka

+0

Haben Sie Javascript Fehler? Verwenden Sie die Entwicklertools im Browser. – Sami

+0

Das ist sehr seltsam. Keine Fehler auch nicht! Die Haltepunkte werden auch nicht ausgelöst. Geht einfach zum onSuccess und gibt diesen massiven HTML-Code zurück – Dinuka

0

Ich hatte das gleiche Problem und das ist, wie ich es gelöst habe. Entfernen Sie zuerst die onclick Attribut aus dem button tag:

<!-- before --> 
<button type="submit" id="submit-form" onclick="signup()">Sign In</button> 

<!-- after --> 
<button type="submit" id="submit-form">Sign In</button> 

Dann ersetzen Sie es mit dieser Linie von Javascript:

$get('submit-form').addEventListener("click", function (event) { 
    signup(); 
    event.preventDefault(); 
}); 

Der Standardereignishandler für das Click-Ereignis der Schaltfläche bewirkt, dass die Seite eingereicht werden , also müssen wir preventDefault[1][2] anrufen, um dies zu verhindern.