1

シリアル化されたオブジェクトを格納する文字列を返す [WebMethod] を作成しました

[WebMethod]
public string doStuffs() {
...
return JavaScriptConvert.SerializeObject(myObj); 
// JSON Serializer library is JSON.NET 1.3.1, for MONO
}

JQuery から $.post を使用してメソッドを呼び出すと、次のようになります。

  $.ajax({
    type: "POST",
    url: "/web/doStuffs",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      // Do stuffs
    }
  });

問題はレスポンスです。ここで私が得るもの:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://localhost:8080/papi">{
 "field1" : "value1", "field2 : "value2", etc etc}</string>

JSON 応答が XML 内にカプセル化されているのはなぜですか? HTTP 応答ヘッダーが (間違って?) 次のように設定されていることがわかります。

Content-Type text/xml; charset=utf-8

応答のコンテンツ タイプを切り替えるにはどうすればよいですか? ありがとう。

4

3 に答える 3

1

私が行った場合:

$.post(
    "/web/doStuffs",
    { username: $("#username").val() },
    function(data){
      var obj = $(data).children();
    },           
    "xml"
);

varobjのJSONをJSで解析する準備ができています。これはうまくいくはずです。

于 2009-04-26T12:04:16.670 に答える
1

AFAIK WebMethods は、ASP.NET によって自動的にシリアル化されるオブジェクトを返します。デフォルトのシリアライザーは SOAP です。これは、以前は Web サービスで想定されていた形式です。

ただし、System.Web.Extensions の ASP.NET AJAX には、JSON シリアライザーを使用する代替ハンドラーがあります。登録方法については、http: //vampirebasic.blogspot.com/2009/04/aspnet-ajax-in-mono.htmlを参照してください。

于 2009-07-02T02:52:04.387 に答える
1

Mono はDataContractJsonSerializerをサポートしていますか?

更新:そのように見えますが、バグがあるのでしょうか?

于 2009-05-20T12:08:33.607 に答える