1

这是我的问题:我有一个返回简单字符串的 Web 服务方法:

namespace webStockService
{
    [WebService(Namespace = "http://tempuri.org/")]
    [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]
    public class StockService : System.Web.Services.WebService
    {
        [WebMethod]
        public string getChallenge()
        {
            //some codes
            return string;
        }
    }

我想用javascript调用这个服务:

try
{
   var challenge = webStockService.StockService.getChallenge();
}
catch(e)
{
   alert(e.messsage);
}

我的通话中没有任何错误消息,但是当我调试我的脚本时,挑战是undefined!!!

我已经以 asmx 方式测试了我的 Web 服务方法,它可以正确调用并返回字符串。

我还在我的 html 中插入了 scriptManager 标签:

<asp:ScriptManager ID="webStockService" runat="server">
            <Services>
                <asp:ServiceReference Path="StockService.asmx" />               
            </Services>
</asp:ScriptManager> 

任何帮助,将不胜感激。

4

1 回答 1

2

此行必须更改

var 挑战 = webStockService.StockService.getChallenge();

请尝试以下

webStockService.StockService.getChallenge(SuccessCallBack);

function SuccessCallBack(returnedString)
{
  alert(returnedString);
}

您必须传递一个回调 javascript 函数才能执行。对 web 服务的调用本质上是异步的,您不会像在代码中尝试的那样获得预期的行为。阅读有关Ajax的信息会给您带来更好的想法。详细解答在这里

于 2013-09-04T06:48:04.410 回答