"未捕获的SyntaxError:意外的令牌<"成功的HTTP请求

时间:2016-08-23 11:05:44

标签: javascript jquery ajax http

我正在尝试使用带有SAP后端系统提供的ODATA REST服务的jQuery来执行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 <

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

1 个答案:

答案 0 :(得分:1)

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

dataType: 'jsonp',

请改为尝试:

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

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