2

私は次のJavaScriptコードを持っています:

var x = ['CFMG','JMFMG','CPMAF'];
var y = $.param({'test':x});
var data = "Operation=xxx&" + y;
$.post(
    "xxx.ashx",
    data,
    function() { ... }
);

クロムconsole.log(data)

Operation=xxx&test%5B%5D=4CFMG&test%5B%5D=JMFMG&test%5B%5D=CPMAF 

私のASP.NETコードはこれを受け取っています:

{Operation=xxx&test%5b%5d=4CFMG&test%5b%5d=JMFMG&test%5b%5d=CPMAF}
[System.Web.HttpValueCollection]: {Operation=xxx&test%5b%5d=4CFMG&test%5b%5d=JMFMG&test%5b%5d=CPMAF}
base {System.Collections.Specialized.NameObjectCollectionBase}: {Operation=xxx&test%5b%5d=4CFMG&test%5b%5d=JMFMG&test%5b%5d=CPMAF}
AllKeys: {Dimensions:[2]}

AllKeys

{Dimensions:[2]}
[0]: "Operation"
[1]: "test[]"

イミディエイトウィンドウで、次のように入力すると次の?var["Test[]"]ようになります。

?var["Test[]"]
"4CFMG,JMFMG,CPMAF"

Test[]値を配列に変換するにはどうすればよいですか?

ありがとうございました!

4

2 に答える 2

2

javascrpt配列をjsonオブジェクトに変換し、データをサーバーに投稿します。JSON.NETを使用することをお勧めします。これは、c# オブジェクトを json にシリアル化および逆シリアル化するためのオープン ソース ライブラリです。

例えば:

string json = @"{
  ""Name"": ""Apple"",
  ""Expiry"": new Date(1230422400000),
  ""Price"": 3.99,
  ""Sizes"": [
    ""Small"",
    ""Medium"",
    ""Large""
  ]
}";

JObject o = JObject.Parse(json);

string name = (string)o["Name"];
// Apple

JArray sizes = (JArray)o["Sizes"];

string smallest = (string)sizes[0];
于 2012-06-28T21:33:25.853 に答える
1

JavaScriptコードを変更しましたが、問題ありません。

以前JSON.stringifyは、JavaScript配列を文字列に解析して、ASP.NETに送信していました。

新しいJavaScriptコード:

var x = ['CFMG','JMFMG','CPMAF'];
var y = JSON.stringify(x);
var data = "Operation=xxx&test=" + y;
$.post(
    "xxx.ashx",
    data,
    function() { ... }
);

クロムconsole.log(data)

Operation=xxx&test=["4CFMG","JMFMG","CPMAF"]

私のASP.NETコードは現在これを受け取っています:

{Operation=xxx&test=%5b%224CFMG%22%2c%22JMFMG%22%2c%22CPMAF%22%5d}
[System.Web.HttpValueCollection]: {Operation=xxx&test=%5b%224CFMG%22%2c%22JMFMG%22%2c%22CPMAF%22%5d}
base {System.Collections.Specialized.NameObjectCollectionBase}: {Operation=xxx&test=%5b%224CFMG%22%2c%22JMFMG%22%2c%22CPMAF%22%5d}
AllKeys: {Dimensions:[2]}

AllKeys

{Dimensions:[2]}
[0]: "Operation"
[1]: "test"

イミディエイトウィンドウで、次のように入力すると次の?vari["test"]ようになります。

?vari["test"]
"[\"4CFMG\",\"JMFMG\",\"CPMAF\"]"

配列に変換するASP.Netコード

string[] blah = json.Deserialize<string[]>(vari["test"]);

イミディエイトウィンドウ:?blah

?blah
{Dimensions:[3]}
[0]: "4CFMG"
[1]: "JMFMG"
[2]: "CPMAF"

どうもありがとうございます!

于 2012-06-29T19:41:43.213 に答える