【发布时间】:2014-02-10 17:37:21
【问题描述】:
由于未知原因,我在控制器中的函数接收到的数据始终为空。 我的数据已正确转换为 json。数据已发送但未收到(发送以成功结束)。
在这里你可以看到我的 Ajax 函数
$.ajax({
url: "/Devices/Read",
contentType: "text",
type: "POST",
datatype: "json",
data: ko.toJSON(self),
error: function (xmlHttpRequest, errorText, thrownError) {
console.log("error")
},
success: function (data) {
if (data != null) {
console.log("success");
}
}
});
这是我在控制器中的功能:
[HttpPost]
public ActionResult Read(string data)
{
return Json(new Object());
}
我试过了:
- 将参数类型更改为:
Object、String - 将 contentType 更改为:
text、application/json; charset=utf-8
仍然没有效果。谁能建议我应该在哪里搜索错误?
更新: 将方法声明更改为:
public ActionResult Read(object[] data, string DeviceUser, string DeviceId, string number)
最后三个字符串没问题,但第一个对象由适当数量的元素组成,但它们为空。 在 JS 中,它们是类数组中的元素
我的 JS 对象的结构:
var Eq = function (name, price) {
var self = this;
self.DeviceSerialNumber = ko.observable();
self.Batch = ko.observable();
};
var ViewModel = function () {
var self = this;
self.data = ko.observableArray([]);
self.DeviceUser = ko.observable();
self.DeviceId = ko.observable();
self.number = ko.observable(1);
};
【问题讨论】:
-
你应该使用 jQuery 的 getJSON 函数。这会自动解析 json 数据。 api.jquery.com/jquery.getjson
-
使用控制器中的
Json()方法返回您的JSON 将自动设置内容类型,因此您无需担心设置。您的方法当前返回一个空对象,所以我不确定您在期待什么?您可以编辑您的 OP 以包含您遇到问题的实际代码吗?
标签: ajax asp.net-mvc json knockout.js