1

こんにちは、誰でもこれから私を助けることができます。

HTMLページがあります。このページには、FirstName、MiddleName、LastNameなどのテキストボックスが含まれています。

このHTMLページのボタンclcikで、javascript関数を呼び出しています。ここでは、JQueryシリアル化を使用してすべてのHTMLページのコントロールとその値を取得しています。次に、この値をサーバーでホストされているWCFサービスに渡します。

このサービスは、この文字列を対応するオブジェクトに解析し、値をデータベースに保存します。

したがって、HTMlページでは、次のようなJavascript関数を記述しました。

pmamml.ButtonClick = function() {
var formData = $("#form1").serializeArray();
var stringJson;
$.getJSON('ajax/test.json', function(formData) {
   stringJson=  JSON.stringify(formData)
});
//alert(stringJson);
$.ajax({
    type: 'GET',
    url: 'http://URL/Service.svc/Update?formData=' + JSON.stringify(formData),
    error: pmamml.ajaxError,
    success: function(msg) {
        document.write(msg);
        //alert(msg);
    },
});},

そして、WCFサービスで私は次のように書いています。

[WebInvoke(Method = "GET", UriTemplate = "/Update?formData={formData}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    public string Update(string formData)
    {
        //   Here i am receiving formdata string as
        // formData = "[{\"name\":\"FirstName\",\"value\":\"Pankaj\"},{\"name\":\"MiddleName\",\"value\":\" \"},{\"name\":\"LastName\",\"value\":\"KUMAR\"}]";
    }

この文字列をListオブジェクト、keyvaluepair、またはDictionaryのいずれかの上記の形式に逆シリアル化します。

この値をデータベースに保存できるようにします。

どうすればこれを行うことができますか。前もって感謝します。

4

3 に答える 3

0

これを行う最も簡単な方法は、\ "([^ \"] *)に一致するRegExを使用して配列に分割することです。

更新Webサービスに送信する場合は、自動的に逆シリアル化するようにJsonとして構成する必要があります。

于 2012-07-06T08:19:31.430 に答える
0

以下のコードは、以下に示すように、文字列データを実行可能な部分に分割します。

        // new list 
        var l = new List<string>();
        // original data
        var s = "[{\"name\":\"FirstName\",\"value\":\"Raja\"},{\"name\":\"MiddleName\",\"value\":\"Raja \"},{\"name\":\"LastName\",\"value\":\"KUMAR\"}]";
        // clean up and split in larger parts
        var d = s.Substring(1, s.Length - 2).Replace("\\", "").Replace("\"", "").Replace("}", "").Split('{');
        // Split in final entries and add to list
        var sb = new char[2] { ',', ':' };
        foreach (var r in d) { l.AddRange(r.Split(sb, StringSplitOptions.RemoveEmptyEntries)); 

//リストの内容は

名前

ファーストネーム

価値

ラジャ

名前

ミドルネーム

価値

ラジャ

名前

苗字

価値

KUMAR

//コードはまだそれほど堅牢ではありません。たとえば、入力文字列が空でないことを確認する必要があります

于 2012-07-06T08:50:16.637 に答える
0

うん、私は解決策を得た

これは私の更新されたJQueryです

pmamml.ButtonClick = function() {
$.fn.serializeObject = function() {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};
var stringJson = JSON.stringify($('#form1').serializeObject());
var Userdata = "formData=" + stringJson;
$.ajax({
    type: 'GET',
    url: 'http://URL/Service.svc/Update?' + Userdata,
    error: pmamml.ajaxError,
    success: function(response, status, xhr) {
        if (response = true) {
            //alert(response);
            alert("Data Updated Successfully");
        }
    }
});

}

上記のメソッドでは、formDataは次のようなJSON文字列を渡します:{"FirstName": "Raja"、 "MiddleName": "Raja"、 "LastName":"Kumar"}。

そして、私のWCFサービスで、このJSON文字列をオブジェクトに変換しました。

[WebInvoke(Method = "GET", UriTemplate = "/Update?formData={formData}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    public bool Update(string formData)
    {
        var mlParser = new MLParser();
        System.Web.Script.Serialization.JavaScriptSerializer s = new System.Web.Script.Serialization.JavaScriptSerializer();

            var InfoList = s.Deserialize<Users>(formData);

        return mlParser.Update(InfoList);
    }



public class Users
{
    public string FirstName { get; set; }
    public string MiddleName { get; set; }
    public string LastName { get; set; }
}

これは正常に機能しています。

あなたの親切な応答のためにあなた全員に感謝します..:)

于 2012-07-06T13:37:13.513 に答える