2013-03-25 81 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