【发布时间】:2017-06-13 23:22:17
【问题描述】:
我有一些使用 jQuery 的 $.ajax() 的代码。
我发现我必须通过JSON.stringify() 传递我的数据。
$.ajax({
url: '/Resource/ReportError',
type: 'POST',
data: JSON.stringify({
ResourceId: popup.data('id'),
Reason: reason,
Description: $('#report-error-description').val(),
Email: $('#report-error-email').val()
}),
contentType: 'application/json; charset=utf-8',
success: function (data) {
// ...
},
error: function () {
// ...
}
});
到目前为止,一切都很好。但现在我用它来获取一些数据,只传入一个 ID。所以我想我应该改用 GET。
$.ajax({
url: '/Resource/GetInitialReviewData',
type: 'GET',
data: JSON.stringify({ resourceId: resourceId }),
contentType: 'application/json; charset=utf-8',
success: function (data) {
// ...
},
error: function () {
// ...
}
});
但这失败了,因为服务器上的resourceId 是null 的错误。
如果我删除对JSON.stringify() 的调用,那么它可以工作!
data: { resourceId: resourceId },
谁能用通俗易懂的方式解释一下?为什么 POST 需要 JSON.stringify 而 GET 不需要。
【问题讨论】:
-
如果模型的属性是简单类型,则不需要
JSON.stringify()进行 POST(但您需要删除contentType: 'application/json; charset=utf-8',。在 GET 中添加contentType: 'application/json; charset=utf-8',也是没有意义的(它有没有身体) -
@StephenMuecke:所以是
contentType把我搞砸了?希望看到您将此评论进一步充实为答案。 -
我需要考虑如何在不写小书章节的情况下做到这一点
标签: javascript jquery json ajax asp.net-mvc