2012-02-15 9 views
3

は次のようにいくつかのデータを返す私のウェブサービス.IN、単純なWebサービス「の.asmx」を使用しています削除することができますどのようにXMLヘッダを持つ:Webサービスは、JSONデータを返しますが、我々は

<?xml version="1.0" encoding="utf-8" ?> 
    <string xmlns="http://tempuri.org/"> 

{"Table":[{"minlatency":16.0,"Time":"\/Date(1328248782660+0530)\/"},{"minlatency":7.0,"Time":"\/Date(1328248784677+0530)\/"},{"minlatency":13.0,"Time":"\/Date(1328248786690+0530)\/"},{"minlatency":6.0,"Time":"\/Date(1328248788690+0530)\/"},{"minlatency":20.0,"Time":"\/Date(1328248790707+0530)\/"}]}</string> 

私が使用しています:

[ScriptMethod(ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)] 

[webmethod]の後にajax callbackにエラーがあります.json形式の戻り値が必要です。

+0

実際のメソッドのコードを含めることはできますか? – dillenmeister

+0

技術的には、*は* XMLです。ちょうどJSONが含まれています。 –

答えて

1

私は私のサービスとして

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public void GetPointers() { 
    DataTable dtmkrs = new DataTable(); 
    dtmkrs.Load(SPs.GetPointers().GetReader()); 

    string[][] pointerArray = new string[dtmkrs.Rows.Count][]; 
    int i = 0; 
    foreach (DataRow mkrs in dtmkrs.Rows) 
    { 
     pointerArray[i] = new string[] { mkrs["LocationID"].ToString(), mkrs["Title"].ToString(), mkrs["Blurb"].ToString(), mkrs["Url"].ToString(), mkrs["LongLatPoint"].ToString() }; 
     i++; 
    } 

    JavaScriptSerializer js = new JavaScriptSerializer(); 
    string strJSON = js.Serialize(pointerArray); 
    dtmkrs.Dispose(); 
    Context.Response.Clear(); 
    Context.Response.ContentType = "application/json"; 
    Context.Response.Flush(); 
    Context.Response.Write(strJSON); 
} 

と(MooToolsはを使用して)次のJavaScript

new Request.JSON({ 
url:<url to webservice>, 
method: 'GET', 
onSuccess: function(resJson, respText) { 
     jsonResponse = resJson; 
    dropJSON(); 
} 
}).send(); 

を以下を使用して、以前の関数であることが判明し、数週間前に同じ問題を持っていましたASP.NETのSQLサーバーデータベースからGoogleマップマーカーを取得するためのコード例#

+0

おそらくそれを行う最もエレガントな方法ではなく、それを行う機能的な方法。 – kolin

+0

"HTTPヘッダーが送信された後、サーバーはヘッダーを消去できません"というエラーが表示されます。 – user1208909

0

jQueryから呼び出すJSONを返すサービスがあり、純粋なJSONのみを返します。これは、私が定義したインタフェースの仕組みです:

<OperationContract()> 
<WebInvoke(Method:="POST", BodyStyle:=WebMessageBodyStyle.Wrapped, ResponseFormat:=WebMessageFormat.Json)> 
Function GetNotes() As List(Of MyClassObject) 
0

[Ira Rainy]が提案したものを使用して修正するか、属性を使用して同じ作業を行うことができます。これはあなたの問題を解決します

[WebInvokeAttribute(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)] 
public string DoSomething() 
{ 
    // your code here 
} 

希望:属性を使用して

、単にご希望の方法(複数可)の上に次の行を置きます。