2009-07-27 15 views
0

私は、AJAX呼び出しを自分のWebサービスを呼び出すようにしようと思いますが、私は、コードの下に見つけてください、それを使用してWebサービスを呼び出すために成功を得るわけではないJSONシリアライズ

私は

using System; 
using System.Web; 
using System.Collections; 
using System.Web.Services; 
using System.Web.Services.Protocols; 
using System.Web.Script.Services; 
using System.Collections.Generic; 

/// <summary> 
/// Summary description for Jasonexample 
/// </summary> 
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ScriptService] 
public class Jasonexample : System.Web.Services.WebService { 

    public Jasonexample() { 

     //Uncomment the following line if using designed components 
     //InitializeComponent(); 
    } 

    [WebMethod] 
    public string HelloWorld(Dictionary<string,object>Input) { 
     return "Hello World " + Input["FName"].ToString() + " " + Input["LName"].ToString(); 
    } 
    [WebMethod] 
    public string test () 
    { 
     return "test"; 
    } 

} 
を呼び出すようにしようとしています

Webメソッド

/// <reference path="jquery-1.2.3.min.js" /> 
$(document).ready(function() { 
    dict = new Object(); 
    dict["FName"] = "Abhishek"; 
    dict["LName"] = "Hingu"; 
    $.ajax({ 
    type: "POST", 
    url: "Jasonexample.asmx/HelloWorld", 
    data: '[{"Key":"FName","Value":"Abhi"},{"Key":"LName","Value":"Hingu"}]', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     alert("Hello"); 
     alert(msg); 
    }, 
    fail:function(msg) 
    { 
     alert("fail"); 
    } 
    }); 
}); 

今すぐいずれかは、あなたがどのように私に言うことができるjavascriptの私のAJAX呼び出しは、呼び出されたAJAXでの辞書のコレクションを渡すために

答えて

0

私は、サーバー側作られた方法で

(私はマイクロソフトのAjaxを使用していた)、この溶液を用いてこの問題を解決:

[WebMethod] 
    public string GetPersonsList (int page, string filter, int ID, OrderedDictionary SelectParameters) 
    { 
     //code   
     return outData; 
    } 

とクライアントコールなどPOSTのパラメータで要求を行う:

{"page":0,"filter":"","ID":-1,"SelectParameters":{"pClassId":1}} 

だからあなたの呼び出しでは、このようなデータ変数を作る必要があります:

data: '{"Input":{"FName":"Abhi","LName":"Hingu"}}' 
0

特定のコレクションがどのように非直列化が行われるかを調べるには、テストメソッドからそのコレクションを返し、JavaScriptSerializerがそれをシリアル化した方法を調べるのが良い方法です。例えば、この方法:

[WebMethod] 
public Dictionary<string,object> HelloWorld() { 
    Dictionary<string, object> d = new Dictionary<string, object>(); 

    d.Add("FName", "Dave"); 
    d.Add("LName", "Ward"); 

    return d; 
} 

戻り値このJSON:

{"FName":"Dave","LName":"Ward"} 

は、あなたの$アヤックス()データパラメータとしてこれを使用してみてください:

data: "{'FName':'Dave','LName':'Ward'}" 

くるあいまいさを避けるために辞書のような曖昧なコレクションを使用すると、using a DTO class insteadと考えるかもしれません。

関連する問題