无法从Web服务获取javascript中的正确值

时间:2013-09-04 05:52:13

标签: javascript asp.net web-services

这是我的问题: 我有一个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> 

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

此行必须更改

var challenge = webStockService.StockService.getChallenge();

请尝试以下

webStockService.StockService.getChallenge(SuccessCallBack);

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

您必须传递回调javascript函数才能执行。对webservice的调用本质上是异步的,您不会像在代码中尝试那样获得预期的行为。阅读Ajax会给你更好的想法。 详细答案here