asp.net c#アプリケーションのコードビハインドのメソッドを呼び出すjavascript関数があります。配列をJSON.stringifyに渡し、JSON.stringifyは以下のjsonText値に相当する文字列を返します。以下の値は、返されるレコードの1つのみを表します。なぜjsonがnull値を返すのですか?
var jsonText = "[{\"eacItem\":{\"ID\":\"dc97d510-cd29-4a23-af7f-36c0acfa1914\",\"AP\":\"201407\",\"EAC\":\"0\"}}]";
文字列を関数に渡して、コード内のメソッドを呼び出します。
$.ajax({
type: "POST",
traditional: true, //might be needed for serialization to work properly
url: pagePath + "/" + "TestMethod",
data: "{'eacArray':" + jsonText + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
alert("successfully posted data");
},
error: function (data) {
alert("failed posted data");
alert(postData);
}
});
これはコードビハインドで呼び出されるメソッドです。
[WebMethod]
public static void TestMethod(List<eacItem> eacArray)
{
//do something
}
これは、メソッドのパラメータ型として設定されたJSONデータに関連付けられたクラスです。
public class eacItem
{
public string ID { get; set; }
public string AP { get; set; }
public string EAC { get; set; }
}
メソッドに渡されたデータにはレコードが含まれていますが、値はすべて下のスクリーンショットに示すようにnullです。なぜこれが起こっているのか分からず、助けていただければ幸いです。
要求された追加情報。 eacArrayの値のスクリーンショットです。
これはデバッグにJSON文字列 データにJSON.stringify(eacArray)の
結果: "{ 'eacArray':" + JSON.stringify(eacArray)+ "}"、
"[{\" eacItem \ ":\" 201407 \ "、\" EAC \ ":\" 0 \ "、\" ID \ ":\" dc97d510-cd29- "" \ "EAC \"、\ "EAC \"、\ "EAC \"、\ "ID \":\ "EAC \" \ "\" EAC \ "、\" EAC \ "、\" ID \ "、" \ "、\" EAC \ "、\" EAP \ ":\" 69326e1b-8d69-431f-8a5b-29f8b279d74c \ "}}、{\" eacItem \ ":\" AP \ "、\" 201306 \ "、\" EAC \ ":\" 0 \ "、 \ "ID \":\ "69326e1
//Iterate through elements on page
$('ElementContainingValue').each(function() {
var ap = this.attributes.ap.value;
var id = this.attributes.id.value;
var eac = $(this).val();
var eacItem = { "AP": ap, "EAC": eac, "ID": id };
eacArray.push(eacItem);
});
var pagePath = window.location.pathname;
$.ajax({
type: "POST",
traditional: true, //might be needed for serialization to work properly
url: pagePath + "/" + "TestMethod",
data: "{'eacArray':" + JSON.stringify(eacArray) + "}",
// Contents of eacArray after stringify
// "[{\"AP\":\"201407\",\"EAC\":\"0\",\"ID\":\"dc97d510"},{\"AP\":\"201408\",\"EAC\":\"0\",\"ID\":\"dc97d510-cd29-4a23-af7f-36c0acfa1914\"}]
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
alert("successfully posted data");
},
error: function (data) {
alert("failed posted data");
alert(postData);
}
});
これは、背後にあるコードで呼ばれる方法である:B-8d69-431f-8a5b-29f8b279d74c \は、 "}}]"
はここで、それは誰も助けることができる場合には修正されたコードです。
これは配列に関連付けられたクラスです。
public class eacItem
{
public string ID { get; set; }
public string AP { get; set; }
public string EAC { get; set; }
}
JSON出力を制御しますか?つまり、送信しているJSONですか? –