【发布时间】:2017-02-16 22:15:13
【问题描述】:
我正在为公司 Intranet 上的内容制作区域创建 UI。我在之前的项目中创建了中间件 API。这是我第一次使用 RESTful 方法(首先我对 Javascript 和 jquery 还很陌生)
当我从 jquery.ajax 调用我的调试本地 api 时,JSON 对象没有在我的 GET 方法上正确传递。
在 C# API 中
[ActionName("THING")]
[HttpGet()]
public string GetThing(object json)
{
GetData getData;
if (json == null)
return null;
else if (json is string && (json as string).StartsWith("{"))
getData = JsonConvert.DeserializeObject<GetData>(json as string);
else
return null;
ItemReturn retVAl = new ItemReturn();
[logic to use JSON]
return retVal;
在网页中
loadThings: function (thingNumber, showBool) {
showBool = (showBool === true);
$.ajax({
type: "GET",
dataType: "json",
data: '{ "GetData" : {"ThingNumber":"' + thingNumber + '","Show": ' + showBool + '}}',
url: "http://localhost:11422/api/THING/THING/GetThing",
contentType: "application/json; charset=utf-8",
success: function (result) {
[logic to display things]
}
我可以很好地在 GetThing 中击中我的断点,一切正常,但我似乎无法弄清楚为什么我的重载中的对象 (json) 为空。我知道这是 javascript 中的东西,我的单元测试工作正常,我的 JavaScript 让我到达方法中的断点,我只需要重载 JSON 对象即可实际传入
更新
它在 api 端。我将 GetThing 的重载从 (object json) 更改为 ([FromUri()] object json)。这解决了眼前的问题,但它目前只是将 JSON 对象转换为空白对象
++注意:我必须将我的 post 方法重载更改为 [FromBody()] 而不是 [FromUri()],我还没有更新 DELETE 方法以查看使用哪个方法
【问题讨论】:
-
您在
ajax请求中的data是一个字符串。将其更改为 js 对象。或者使用JSON.stringify,然后在服务器上解析。
标签: javascript c# jquery json ajax