Почему моя функция CallBack не работает? - PullRequest
5 голосов
/ 03 ноября 2010

Я пытаюсь сделать несколько звонков в WebService

Я сделал именно то, что описано в этой статье

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

Глядя на консоль firebugЯ мог видеть, что моя функция была выполнена и вернула ожидаемые данные, но мои функции обратного вызова (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>

Ответы [ 2 ]

1 голос
/ 19 сентября 2012

Проблема была в типе проекта, он работает в WebApplication, а не в WebSites

1 голос
/ 08 ноября 2010

Я, в основном, парень из VB ...

Попробуйте по одному по порядку.

Сначала посмотрите, действительно ли вы выбираете текстовое поле, я сомневаюсь в этом. Установите ClientIDMode как статический.

Вторая попытка [WebMethod(), ScriptMethod(ResponseFormat:=ResponseFormat.Json)]

В-третьих, сделайте метод статическим .. упс, виртуальный и класс тоже.

...