2010-11-03 18 views
5

Ich versuche, einige Anrufe zu einem WebServiceWarum funktioniert meine CallBack-Funktion nicht?

Ich tat genau das zu machen, was in diesem Artikel beschrieben wird

http://viralsarvaiya.wordpress.com/2010/03/23/calling-web-service-from-java-script-in-asp-net-c/

an der Konsole von Firebug Suche ich, dass meine Funktion ausgeführt wurde sehen konnte und gab die erwarteten Daten zurück, aber meine Callback-Funktionen (OnComplete, OnError, OnTimeOut) werden nie ausgeführt.

Was ist los? Hier

ist der Code (gleicher Code des Artikels) Service.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 

[WebService(Namespace = "http://Localhost...xys/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService] 

[System.Web.Script.Services.ScriptService()] 

public class Service : System.Web.Services.WebService 
{ 
    public Service() { 

    //Uncomment the following line if using designed components 
    //InitializeComponent(); 
    } 

    [WebMethod] 
    public string HelloWorld(string strNoOfData) 
    { 
     return strNoOfData; 
    } 
} 

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<script type="text/javascript" language="javascript"> 
function CallService() { 
    Service.HelloWorld(document.getElementById('Textbox1').value, 
     OnComplete, OnError, OnTimeOut); 
} 

function OnComplete(Text) { 
    alert(Text); 
} 

function OnTimeOut(arg) { 
    alert("timeOut has occured"); 
} 

function OnError(arg) { 
    alert("error has occured: " + arg._message); 
} 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    <Services> 
     <asp:ServiceReference Path="~/Service.asmx" /> 
    </Services> 
</asp:ScriptManager> 

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
<ContentTemplate> 
<fieldset> 
<asp:TextBox ID="Textbox1" runat="server"></asp:TextBox> 
<br /> 
<asp:Button ID="Button1" runat="server" Text="Call Service" OnClientClick="CallService()" /> 
</fieldset> 
</ContentTemplate> 
</asp:UpdatePanel> 
</div> 
</form> 
</body> 
</html> 
+0

können Sie bitte Ihren Code hier posten? das könnte helfen, das Problem zu beheben. –

+0

der Code ist genau der Code des Artikels – Ewerton

+0

Ich verwendete Ihren genauen Code, Callbacks wie erwartet aufgerufen. Das einzige, was mir aufgefallen ist, ist, dass Sie 'OnTimeOut' anstelle des' userContext' -Parameters übergeben, versuchen Sie,'InlineScript = "true" 'zu Ihrer Service-Referenz hinzuzufügen, dann die Quelle anzusehen und das generierte Serviceskript zu prüfen. –

Antwort

1

Das Problem war der Projekttyp, es funktioniert in WebApplication, nicht in WebSites

+1

Ich bin froh, dass du es herausgefunden hast. Außerdem sollten Sie die ASMX-Dienste verlassen und WCF verwenden. –

1

Im a VB Kerl meist so ....

Probieren Sie eins nach dem anderen aus.

Zuerst sehen, wenn Sie wirklich die Textbox auswählen, bezweifle ich es. Legen Sie den ClientIDMode als statisch fest.

Zweitens versuchen [WebMethod(), ScriptMethod(ResponseFormat:=ResponseFormat.Json)]

Drittens die Methode statisch machen .. oops virtuelle und die Klasse auch.

Verwandte Themen