2012-07-10 21 views
0

我正在跟以下细节的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,状态和错误的对象错误:

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),则会发生错误。 关于如何解决这个问题的任何建议?

回答

0

问题是在服务器侧,其中i是迫使服务器返回应用程序/ 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 

现在我删除“生产=“应用程序/ 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 
+0

现在一切都是固定的。对?但请记住,现在您期望纯文本作为响应。所以,如果它的json,使用它之前更好地解析它 - jQuery.parseJSON(json) – Jithin 2012-07-11 06:29:21

+0

是的,我会的。谢谢 :) – nilgun 2012-07-11 08:17:50

1

因为你期望的响应是一个JSON

Content-Type:application/json 

粘贴你的Ajax调用JavaScript的一部分,所以我可以为您提供更多的信息。

+0

我不是强迫响应被应用on/json通过ajax调用,但在服务器端。感谢您指导我朝着正确的方向发展。 – nilgun 2012-07-11 06:27:53