我无法使用JSON向我的网络方法发送值。
public class Order
{
public string Item { get; set; }
public string Color { get; set; }
public string Qty { get; set; }
public string Size { get; set; }
}
[WebMethod]
public static string SendOrder(string name, string branch, string jobFunction, string requestReason, string logo, string json)
{
var orders = JsonConvert.DeserializeObject<List<Order>>(json);
}
这是我的ajax电话:
$('#SubmitOrder').on('click', function (e) {
var table = $('#orders-table').tableToJSON({
ignoreColumns: [4]
});
var obj = {
Name: $('#FullNametbx').val(),
Branch: $('#Address').val(),
JobFunction: $('#JobFunction').val(),
RequestReason: $('#RequestReason').val(),
Logo: $('#LogoOnShirt').val(),
Orders: table
};
alert(JSON.stringify(obj));
$.ajax({
type: "POST",
url: "Apparel.aspx/SendOrder",
data: { data: JSON.stringify(obj) },
contentType: "application/json",
dataType: "json",
success: function (msg) {
alert(msg);
}
});
});
以下是我与Fiddler的关系:
{
'name': 'Roger Rabbit',
'branch': 'PHX',
'jobfunction': 'Service Tech',
'requestReason': 'New Hire',
'logo': 'Nike',
'json': '[
{
"Item":"Port Authority Women's Jacket #L790 - Black",
"Size":"X-Small",
"Color":"Black",
"Quantity":"3"
},
{
"Item":"Port Authority® Long Sleeve Easy Care Shirt",
"Size":"3XL-Tall",
"Color":"Black",
"Quantity":"4"
}]'
}
问题是我将所有基本参数都作为字符串,但最后一个参数称为“json”,这是一个html表中的订单列表,我在表上调用stringify,所以我认为回来的结果不好。
如何更改我的ajax调用以将正确的值传递给正确的参数?
答案 0 :(得分:1)
更改Web方法以接受对象
[WebMethod]
public static string SendOrder(IEnumerable<Order> order)
{
//No need to deserialize the JSON
}
您也可能会丢失Order类上的json属性。
同时在您的jQuery AJAX调用中弹出dataType: "json"
。
如果你需要保留你的参数,那么创建另一个由这些和Order
类组成的类,然后将它们拉出你的WebMethod。
public class OrderViewModel
{
public IEnumerable<Order> Orders { get; set; }
public string Name { get; set; }
// ... etc ... //
}
将您的AJAX更改为此而不是自己连接字符串:
var obj = {
"name" : $('#FullNametbx').val(),
"branch" : $('#Address').val(),
"jobfunction" : $('#JobFunction').val()
// ... etc ... //
};
$.ajax({
type: "POST",
url: "Apparel.aspx/SendOrder",
data: JSON.stringify(obj),
dataType: 'json',
contentType: "application/json",
success: function (msg) {
alert(msg);
}
});