2009-11-26 17 views
0

我在asp.net中有一個腳本服務,我需要使用JSONP從JavaScript使用此WS(腳本標記注入;因爲它是跨域,沒有$ .ajax()調用) 。在javascript中使用ASP.net腳本服務消耗

在這種情況下,其中web方法的輸入是一個複雜的結構,我必須在客戶端創建輸入結構。如何將客戶端結構與服務器端參數匹配?

爲了使問題更清晰的一點給定 的答案不至於 -

假設我有莫名其妙創建 複雜的輸入,並將其傳遞給 腳本方法。現在,請問我的輸入 結構的 輸入參數的腳本方法發生的 匹配/ vaidation(或其他 的話,什麼是 匹配的依據是什麼?)

回答

0

在這種情況下,您將基於您發現的參數發送JSON結構。如果它與服務接受的相同,那麼您的呼叫將成功,否則將失敗。

+0

這是什麼意思..這就是問題的整個問題! – Ajay 2009-11-26 09:04:33

1

您可以在不使用Microsoft.Ajax框架的情況下將複雜類型傳遞給webservice。我用JQuery寫了一個小例子。

假設你有作爲參數將WebMethod下面的C#類:

namespace JQueryWebServiceTest 
{ 
    public class TwoStringsTogether 
    { 
     public string StringA; 
     public string StringB; 
    } 
} 

將WebMethod具有以下特徵:

TwoStringsTogether TransformTwoStringsTogether(TwoStringsTogether input) 

您可以調用的方法是這樣的:

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "TestService.asmx/TransformTwoStringsTogether", 
    data:"{" + 
     "input: {" + 
     "__type: 'JQueryWebServiceTest.TwoStringsTogether'," + 
     "StringA: 'HalloA'," + 
     "StringB: 'HalloB'" + 
     "}" + 
    "}", 
    dataType: "json", 
    success: SuccessCallback 
}); 

請注意__type參數,但不會失效。