我将一些JSON数据发布到我的动作方法,如下所示:
$.ajax({
url: this.options.url,
type: 'POST',
dataType: 'json',
data: values,
success: function (html, status, response) {
// do whatever
},
error: function (error) {
// do whatever
}
})
我成功点击服务器,正确的值存在,没有抛出任何错误,但错误事件是完成,而不是成功事件。在检查错误事件中的响应对象时,我可以看到我正在获得200'OK'。我还可以看到响应文本正是我所期望的。
我认为这是因为我发布了JSON但是返回了文本?是否可以为每个方向设置不同的数据类型?
答案 0 :(得分:5)
dataType
属性用于表示您期望响应呼叫的数据类型,而不是您要发送的数据类型,因此您的呼叫期待JSON响应,但正在获得相反,纯文本。
答案 1 :(得分:3)
您指定的数据类型是针对响应类型的。只需将其更改为text
即可。
引发错误,因为jQuery尝试将您的文本响应解析为JSON,从而遇到问题。
$.ajax({
url: this.options.url,
type: 'POST',
dataType: 'text',
data: values,
success: function (html, status, response) {
// do whatever
},
error: function (error) {
// do whatever
}
})
答案 2 :(得分:1)
简短回答当然是。
通过http://api.jquery.com/jQuery.ajax/ dataType指的是
您期望从服务器返回的数据类型。
不是你发送的内容。同时,如果您发送JSON,实际上只是发送文本 - 恰好包含JSON内容的文本。
所以,你可能只需更改dataType就可以说你正在返回文本,而且你可能是金色的。
答案 3 :(得分:0)
检查dataType属性。 jQuery期待JSON响应。来自doc:
“json”:将响应评估为JSON并返回JavaScript 宾语。在jQuery 1.4中,JSON数据以严格的方式解析;任何 格式错误的JSON被拒绝,并引发解析错误。 (见json.org 有关正确的JSON格式的更多信息。)
答案 4 :(得分:0)
您希望将数据作为文本格式。
$.ajax({
url: this.options.url,
type: 'POST',
dataType: 'text', // instead of json
data: values,
success: function (html, status, response) {
// do whatever
},
error: function (error) {
// do whatever
}
})