2011-07-15 27 views
0

私のアプリケーションでは、このページでプロトタイプ1.4.2を使用しています。asp.net webserviceでjsonを返す

そして、私たちはその後、私はそれがに基づいて構築されて

TafelTree

を発見し、遅延ロードをサポートするツリービューを(AJAXリクエストを作成し、ノードにサーバーからデータを追加する)必要がありますプロトタイプ。

そして機能があります:

onopenpopulate: 

これは、ユーザーが提供する「オープンリンクを」に従って、サーバーからデータをロードします。

ブランチを開いた後に呼び出されます。開いているときは、openlinkページでAjax リクエストを起動し、ユーザーにAjaxレスポンスを送信します( 関数)。 1つの配列、つまり 以上のTafelTreeBranchを表すJSON文字列を返す必要があります。 TafelTreeのsetOnOpenPopulate()をオーバーライドします。

しかし、サーバリターンの純粋なjsonデータフォーマットが必要です。

そして、私は、Webサービスをこのように作成しました:

http://xxx/UtilService/loadData?id=0 

は、私は常にXMLフォーマットを取得:

[WebService(Namespace = "http://microsoft.com/webservices/"; 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ScriptService] 
public class UtilService: WebService { 
    [WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string loadData(id) { 
     //some logic according the id 
     return "{id:0,name:'xx'}"; 
    } 
} 

は、しかし、私は、このサービスの利用を呼び出すとき。

Googleからは、ajaxリクエストを作成するときに「コンテンツタイプ」を設定する必要があるようです。

しかし、私の場合、ajaxは "TafelTree"によって送信されます。余分なパラメータを追加することはできません。

別のプロトタイプベースのツリーを使用しますか?

答えて

1

jqueryを使用してAjax呼び出しを行うことができます。

$.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: "webServiceUrl/MethodName", 
     data: "{Id: '" + id + "'}", 
     dataType: "json", 
     success: loadSucceeded, 
     error: loadFailed, 
     async: true 
    }); 

function loadSucceeded(result, status) 
{ 
    var data = result.d; 
} 

function loadFailed(result, status) 
{ 
} 

必ずしも文字列を返す必要はありません。オブジェクトのリストを返すことができます。

[WebService(Namespace = "http://microsoft.com/webservices/"; 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ScriptService] 
public class UtilService: WebService 
{ 
    [WebMethod] 
    public List<string> loadData(id) { 
     //some logic according the id 
     return new List<string>(){"data"}; 
    } 
} 
+0

我々は我々のアプリケーションでプロトタイプを使用するが、同時に2つのlibsを使用するのは良い考えではないようだと、彼らはお互いに競合が発生する可能性があります – hguser

関連する問題