【发布时间】:2014-09-30 20:53:27
【问题描述】:
我正在尝试像这样向服务器发出POST 请求:
var body = {
PatientAgeFilter: {
CompareOperator: parseInt(self.patientAge()),
MoreThanVal: {
AgeSpecifier: 0,
AgeValue: parseInt(self.patientAgeLow())
},
LessThanVal: {
AgeSpecifier: 0,
AgeValue: parseInt(self.patientAgeHigh())
}
}
};
$.post(url, body, self.results, "json").done(function () {
console.log("request done!");
console.log(self.results());
});
URL设置正确,self.results是一个Knockout.JSobservableArray(),body设置如上。
服务器端,这是处理请求的代码:
[HttpPost]
public IQueryable<Measurement> GetMeasurements(MeasurementQuery queryOptions)
{
...
if (queryOptions != null) {
if (queryOptions.PatientAgeFilter.CompareOperator != CompareOperator.Any) {
...
}
}
}
我在if (queryOptions != null) 上设置了一个断点,并且queryOptions 不为空。但是queryOptions 的内容保持默认,即使我指定了body 中的字段(CompareOperator 应该等于 3,但它保持为 0 - 等于 CompareOperator.Any),所以POST 的主体请求未正确解析。
有人能帮我看看为什么会这样吗?非常感谢!
【问题讨论】:
-
self.results()被视为method调用 -
也许您只需要对结果进行字符串化 - JSON.stringify(self.results())
-
@hindmost 这不是问题,我之前在其他请求中使用过,没有任何错误或其他任何问题。
-
@BobMac 结果如他们所愿,只是不是我预期的结果。
标签: javascript jquery asp.net-mvc json knockout.js