我正在我的服务中开发一个应用程序,我必须发送一个数组作为aparam,
Ext.Ajax.request({
method: 'POST',
contentType: 'application/json; charset=utf-8;',
type: 'json',
url: 'http:/....',
disableCaching: false,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
jsonData: {
FirstName: local_fname_array2,
},
success: function (response) {
console.log(response);
}
});
在服务中......像这样
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/Check1")]
int Psngr(string[] FirstName);
服务定义:
public static int Psngr(string[] FirstName) {
List < Psgr > psgr = new List < Psgr > ();
var getVal = from s in FirstName select s;
int count = getVal.Count();
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["db"].ToString());
con.Open();
using(var cmd = new SqlCommand("SP_InsertCheck1", con)) {
int result;
cmd.CommandType = CommandType.StoredProcedure;
for (int i = 0; i < count; i++) {
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@FirstName", FirstName[i]);
using(var Da = new SqlDataAdapter(cmd))
using(var Ds = new DataSet()) {
Da.Fill(Ds);
result = Convert.ToInt16(Ds.Tables[0].Rows[0]["Result"].ToString());
}
}
return 1;
}
}
但我得错了......
服务器在处理请求时遇到错误。异常消息是'格式化程序在尝试反序列化消息时引发异常:尝试反序列化参数时出错:FirstName。 InnerException消息是'Expecting state'Element'。遇到名为',namespace'的'Text'。 ”。有关更多详细信息,请参阅InnerException。'请参阅服务器日志以获取更多详异常堆栈跟踪是:
答案 0 :(得分:0)
也许你应该在发送到服务器之前对你的数组数据进行编码,就像这样:
Ext.encode(the_array)
答案 1 :(得分:0)
你必须解码数组
jsonData: {
trvlrTitle:Ext.decode(local_prefix_array)
}
稍后你必须发送:
Ext.Ajax.request({
url:'http://aa.com,
method:'POST',
disableCaching: false,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
jsonData: {
trvlrTitle:Ext.decode(local_prefix_array)
}
});