2013-03-25 82 views
0

我正在使用javascript访问下面的WCF Ajax Web服务。访问JSON对象中的字符串

[OperationContract] 
    public string Test() 
    { 
     return "test"; 
    } 

我正在使用下面的JavaScript执行该方法,并有一个按钮连接到该函数。

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
<Services> 
    <asp:ServiceReference Path="~/AjaxService.svc" /> 
</Services> 
</asp:ScriptManager> 

<script type="text/javascript"> 
function TestFunction() { 
    alert(JSON.stringify(AjaxService.Test())); 
} 
</script> 

现在,当我运行代码警报说未定义。但是,当我检查萤火虫,我可以看到Webmethod实际上工作正常。我得到了一个{“d”:“test”}的http响应。

如何访问我从JavaScript中的Ajax Web方法返回的字符串?

+0

你能尝试的console.log( AjaxService.Text())来查看输出是什么? – Shuping 2013-03-25 00:32:36

回答

0

首先,请尝试使用jQuery的JSON解码的多种浏览器支持,例如使用:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

然后你就可以使用解码JSON字符串:

var response = $.parseJSON(AjaxService.Test()); 
alert(response['d']); // This should show 'test' 
+1

他没有在他的问题的任何地方提及jQuery,或者使用标签。它不需要你在做什么。 – 2013-03-25 00:27:58

+0

那么你怎么知道这不是因为JSON.stringify()而不是跨浏览器?他想要那个工作。 – axelbrz 2013-03-25 00:29:44

+1

我真的不确定他的代码有什么问题,他没有给我们足够的信息。如果他传递了一个JSON字符串,那么他应该运行JSON.parse()而不是stringify,并且不需要jQuery。无论我认为我们需要更多的信息,还是需要了解更多关于WCF的信息,而不是我所知道的。 – 2013-03-25 00:31:26