当响应文本是字符串时,jquery ajax调用返回错误

时间:2012-07-10 10:41:27

标签: ajax jquery

我正在制作一个带有以下细节的ajax请求:

Request URL:http://localhost:8080/MyWebService/cars/70ced046-3061-4d9d-b9ce-7d1291d5b5c0
Request Method:DELETE
Status Code:200 OK

Request Headers
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Content-Type:application/json
Host:localhost:8080
Origin:http://localhost:8080
Pragma:no-cache
Proxy-Connection:keep-alive
Referer:http://localhost:8080/MyWebService/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko)     Chrome/20.0.1132.47 Safari/536.11
X-Requested-With:XMLHttpRequest

Response Headers
Content-Length:36
Content-Type:application/json
Date:Tue, 10 Jul 2012 10:18:45 GMT
Server:Apache-Coyote/1.1

但是随后ajax调用返回错误,其中包含以下xhr,status和error对象:

function(request, status, error) 

>status
"parsererror"

>error
SyntaxError
arguments: Array[0]
get message: function () { [native code] }
get stack: function () { [native code] }
set message: function () { [native code] }
set stack: function () { [native code] }
type: "unexpected_token_number"
__proto__: Error

>request
Object
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
isRejected: function () {
isResolved: function () {
overrideMimeType: function ( type ) {
pipe: function ( fnDone, fnFail, fnProgress ) {
progress: function () {
promise: function ( obj ) {
readyState: 4
responseText: "44550569-871d-49ae-8583-f07ee3a07832"
setRequestHeader: function ( name, value ) {
state: function () {
status: 200
statusCode: function ( map ) {
statusText: "OK"
success: function () {
then: function ( doneCallbacks, failCallbacks, progressCallbacks ) {
__proto__: Object

如果响应是整数或任何其他json,则调用可以正常输入成功函数。但如果响应是字符串(44550569-871d-49ae-8583-f07ee3a07832),则会出错。 有关如何解决此问题的任何建议吗?

2 个答案:

答案 0 :(得分:1)

因为您希望响应是JSON

Content-Type:application/json

粘贴你的ajax调用javascript部分,以便我可以为你提供更多信息。

答案 1 :(得分:0)

问题出在服务器端,我强迫服务器返回application / json:

@RequestMapping(method = RequestMethod.DELETE, value = "/cars/{id}", produces="application/json")

产生以下响应头:

Response Headers
Content-Length:36
Content-Type:application/json
Date:Tue, 10 Jul 2012 10:18:45 GMT
Server:Apache-Coyote/1.1

现在我删除了“produce =”application / json“”部分,它返回以下标题:

Content-Length:36
Content-Type:text/plain;charset=ISO-8859-1
Date:Wed, 11 Jul 2012 06:08:00 GMT
Server:Apache-Coyote/1.1