我在向服务器发送2个特定对象时遇到问题。
我有一个带有输入和文本区域的表单
发送函数SendServer() { $就({
url: '/api/Service',
type: "POST",
contentType: 'application/json',
data: {} //!!!
success: function (response) {
},
error: function (er) {
}
});
}
问题是我的文本区域将包含以下形式的用户输入json:
{
"list": [
{
"name": "john smith",
"lastaccess": "2016-01-01T07:21:31 -00:00"
},
{
"name": "paul marley",
"lastaccess": "2016-01-01T07:22:31 -00:00"
}
]
}
我需要将两个值都发送到服务器:
public class ServiceController : ApiController
{
public string Post( *something* )
{}
}
我可以到达服务器,但我不知道如何正确发送2个对象,以便我可以在服务器上检索它们?
我一直在尝试很多选择,没有任何效果:(
答案 0 :(得分:1)
由于您要发送用户使用表单输入的json,您可以考虑使用JObject
类作为您的web api方法参数。
所以在你的表格中
<form id="form1">
<input type="text" id="val1" name="val1" value="1" />
<textarea class="form-control" id="json" name="json"></textarea>
<button id="send">Send</button>
</form>
现在,在按钮上单击,读取两个输入的值并创建一个新对象,然后将其发送到服务器。
$(function () {
$("#send").click(function (e) {
e.preventDefault();
var v = $("#val1").val();
var t = $("#json").val();
var d = { val1: v, json: t };
$.ajax({
url: '/api/values',
type: "POST",
contentType: 'application/json',
data: JSON.stringify(d),
success: function (response) {
console.log(response);
},
error: function (er) {
console.log(er);
}
});
});
});
在WebApi端点中,您可以使用JObject作为参数。默认模型绑定器将能够将发布的值映射到JObject的对象。
public HttpResponseMessage Post([FromBody]JObject value)
{
var v = value["val1"];
var j = value["json"];
// do something with these
// v.Value will give you the value
return Request.CreateResponse("Something received");
}
JObject类属于Newtonsoft.Json.Linq
命名空间。因此,请确保使用using语句将其包含在您的web api控制器中。