0

我将一些 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 但返回文本?每个方向是否可以有不同的数据类型?

4

5 回答 5

5

dataType属性用于表示您期望响应调用的数据类型,而不是您发送的数据类型,因此您的调用期望 JSON 响应,而是获取纯文本。

于 2012-04-23T13:54:50.630 回答
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
        }
})
于 2012-04-23T13:55:38.607 回答
1

简短的回答是,当然是的。

通过http://api.jquery.com/jQuery.ajax/ dataType 指

您期望从服务器返回的数据类型。

不是您发送的内容。同时,如果您发送 JSON,您实际上只是发送文本——恰好包含 JSON 内容的文本。

因此,您可能只需要更改 dataType 来表示您正在返回文本,并且您可能会很成功。

于 2012-04-23T13:56:21.190 回答
0

检查 dataType 属性。jQuery 期待 JSON 响应。从文档:

“json”:将响应评估为 JSON 并返回一个 JavaScript 对象。在 jQuery 1.4 中,JSON 数据以严格的方式解析;任何格式错误的 JSON 都会被拒绝并引发解析错误。(有关正确的 JSON 格式的更多信息,请参阅 json.org。)

于 2012-04-23T13:56:31.600 回答
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
        }
    })
于 2012-04-23T13:57:41.803 回答