成功的HTTP请求后,“未捕获的SyntaxError:意外的令牌<”

我正在尝试使用jQuery和SAP后端系统提供的ODATA REST服务来执行AJAX。

$.ajax({ type: 'GET', url: 'http://sapxx.sapms/sap/opu/odata/.../', async: true, dataType: 'jsonp', username: 'username', password: 'password', crossDomain: true, success: function() { alert('Done.'); }, error: function() { alert('Error.'); }, }); 

请求返回状态200,我从服务器得到响应,称为“?callback = jQuery3100687 …”并包含xml代码。 所有这些都在Chrome调试器中可见。 但是在成功的HTTP请求之后我得到了上述错误

 Uncaught SyntaxError: Unexpected token < 

我怀疑错误是由于“dataType”参数在请求中设置为“jsonp”。 有没有办法解决这个错误? 服务器只能使用XML格式进行响应。 该请求仅在dataType设置为“jsonp”时有效,我猜是因为它启用了CORS。 发送请求后,尽管有200状态,我仍然收到“错误”警告。

你说你从服务器得到一个xml响应。 你的ajax请求是为jsonp设置的,但是:

 dataType: 'jsonp', 

试试这个:

 dataType: 'xml', success: function(xml) { //remainder of the code } 

如果将dataType设置为jsonp ,jQuery将尝试将响应解析为JSON。 这会导致错误,因为响应不是JSON。