是否有可能发布'json'并使用jQuery的$ .ajax方法返回'text'?

时间:2012-04-23 13:53:01

标签: jquery ajax

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

5 个答案:

答案 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
        }
    })