2010-11-03 74 views
5

我想打幾個電話到WebService爲什麼我的CallBack功能不起作用?

我也正是本文

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

看螢火的控制檯,我可以看到我的函數執行中所描述和返回了預期的數據,但我的回調函數(OnComplete,OnError,OnTimeOut)從未執行。

怎麼了?

這裏是代碼(相同文章的代碼) 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

您可以在這裏發佈您的代碼嗎?這可能有助於調試問題。 – 2010-11-03 12:46:22

+0

該代碼完全是該文章的代碼 – Ewerton 2010-11-03 12:50:55

+0

我使用了您的確切代碼,回調函數按預期方式調用。我唯一注意到的是你正在傳遞'OnTimeOut'來代替'userContext'參數,嘗試向你的服務引用添加'InlineScript =「true」'然後查看源代碼並檢查生成的服務腳本。 – 2010-11-05 11:22:50

回答

1

問題是項目類型,它適用於WebApplication,而不適用於WebSites

+1

很高興你發現。另外,您應該遠離ASMX服務並開始使用WCF。 – 2012-09-19 15:04:27

1

林一個VB人大多如此....

按順序嘗試一個。

首先看看你是否真的選擇了文本框,我懷疑它。將ClientIDMode設置爲靜態。

第二次嘗試[WebMethod(), ScriptMethod(ResponseFormat:=ResponseFormat.Json)]

三使該方法靜態..哎呀虛擬和類也。

相關問題