2012-07-23 81 views
0

我目前有一個ajax自定義控件,可以調用Web服務作爲其功能的一部分。我需要將哪個Web服務作爲參數傳遞給控件。目前,我在.vb文件中使用字符串參數並將其傳遞給javascript。我通過將一行建立爲一個字符串,然後對其使用eval()來執行對Web服務的調用。如何將Web服務作爲字符串傳遞給JavaScript?

here,我可以看到eval是壞的。就像那個頁面上的函數調用一樣,我有什麼方法可以將Web服務用作我可以調用的東西?

請注意,我從Web服務調用方法。而不是stringservice(參數),它是stringservice.start(參數)。我只是得到了字符串沒有啓動方法的錯誤。

任何解決方案,或者我堅持使用eval?謝謝:)

+0

請向我們展示構建函數字符串的代碼。 – Bergi 2012-07-23 14:00:46

+0

目前它就像這樣: 'var starter = this.WebService +'.Begin(this.ProcessID,this.ProcessName,params);'; eval(beginProcess);' 但似乎我應該使用JSON格式?我會研究一下。 – 2012-07-23 14:20:03

回答

1

如果字符串是JSON格式,您可以使用JSON.parse

+0

謝謝!我仍然可以撥打不同的方法嗎? – 2012-07-23 14:18:25

+0

對不起,但我不明白你的問題 – 2012-07-23 14:27:29

+0

目前在eval中,我只是調用'service.method(parameters);'它仍然會像JSON那樣工作嗎? – 2012-07-23 14:42:05

1

您可以用bracket syntax以及訪問全局對象的屬性轉換安全是:

window[this.WebService](this.ProcessID, this.ProcessName, params); 

然而,我建議將可用函數捆綁到web服務對象中,如

var webservices = { 
    a: function(id, name, params) { ... }, 
    b: function(id, name, params) { ... }, 
    ... 
}; 

... 

webservices[this.WebService](this.ProcessID, this.ProcessName, params); 
+0

這個方法對於方法調用仍然有效嗎?喜歡,我可以使用'webservices [this.WebService] .Begin();'?或者,如果我把開始放在web服務中,它會起作用。例如:'this.WebService ='testservice.begin''?感謝您的幫助:) – 2012-07-23 14:48:41

+0

是的,當屬性指向一個對象時,您可以再次使用點語法訪問那些屬性。第二個不起作用,對於包含無效標識符字符(如點,括號等)的屬性名稱,情況正是如此。 – Bergi 2012-07-23 15:49:32

相關問題