2012-12-11 67 views
0

這個問題比從Js調用Web方法稍微複雜一點。從Javascript調用ASP.NET 2.0 Web服務

這是我在ASP.Net側得了代碼:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ScriptService] 
public class WebService : System.Web.Services.WebService 
{ 
     [WebMethod] 
     [ScriptMethod(ResponseFormat = ResponseFormat.Xml)] 
     public KError GetAppServer(int version, ref KServerInfo serv, ref KUserMessage msg) 
     { 
     ...... 
     } 
} 

KErrorKServerInfoKUserMessage是簡單的序列化類,只有在它的字符串和整數。

當在.Net環境中使用此服務時,傳遞對複雜類型的引用沒有問題,但它不適用於Js。

我已經嘗試了很多選擇(谷歌並沒有真正幫助這件事)傳遞引用到服務器和味精,但服務不斷回覆500 - 內部服務器錯誤。錯誤描述說ASP.Net無法從json數據實例化serv和msg。

這裏是我的js部分:

var app = { 
      version : 1, 
      SessionID : "''", 
      Path : "''", 
      Login : "''", 
      Pwd : "''", 
      UserID : 0 
      }; 
var jd = { version : 1, 'appSrv': app, 'msg': msg }; 
$.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: "http://localhost:3965/api.asmx/GetAppServer", 
       data: JSON.stringify(jd), 
       //data: JSON.stringify(jd), 
       dataType: "json", 
       success: AjaxSucceeded, 
       error: AjaxFailed 
      }); 

,這裏是我從服務器獲取確切的錯誤:

類型的\ u0027API.code.KServerInfo & \ u0027定義無參數的構造函數

+2

你以前http://encosia.com/using-complex-types-to-make-閱讀本呼叫服務,不太複雜/? – Tariqulazam

+0

您可以添加JS請求代碼的一些和平,以便我們可以確定問題嗎? –

+0

是的,我沒看過那篇文章,但沒有幫助 –

回答

-2

我想從Java調用腳本您在課前需要這條線服務

// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService] 

所以,你的代碼應該是這樣的

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ScriptService] 
[System.Web.Script.Services.ScriptService] 
public class WebService : System.Web.Services.WebService 
{ 
    [WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Xml)] 
    public KError GetAppServer(int version, ref KServerInfo serv, ref KUserMessage msg) 
    { 
    ...... 
    } 
} 
+0

它在那裏。我有使用System.Web.Script.Services;在源文件的頂部,在類定義處的[ScriptService],這與其他方法大同小異,因爲所有其他方法都沒有引用對象,從Js正常工作 –

1

嘗試使用此代碼:

var jd = { version : 1, serv: app, msg: msg };