Проблема с "Uncaught SyntaxError: Неожиданный токен <" - PullRequest
0 голосов
/ 28 марта 2012

Я успешно запросил XML-файл Basecamp через ajax, но выдает ошибку (в Google Chrome):

Ресурс интерпретируется как Другое, но передается с неопределенным типом MIME.Uncaught SyntaxError: Неожиданный токен <</em>

Firefox также выдает ошибку, но это совершенно другая ошибка.Я не могу изменить файл XML, и структура файла XML правильная.Я пытался и искал, но могу узнать, что не так.Любая помощь будет принята.

Вот код jQuery:

<code>$(document).ready(function() {
    $.ajaxSetup({accepts:'text/xml',cache:false});
    $.ajax({
            type: 'GET',
            dataType: 'jsonp',
            contentType: 'text/xml',
            mimeType: 'text/xml',
            crossDomain: true,
            url: url,
            beforeSend: function(xhr) {
                    var bytes = Crypto.charenc.Binary.stringToBytes(username+":"+password);
                    var base64 = Crypto.util.bytesToBase64(bytes);
                    xhr.overrideMimeType("text/xml;charset=UTF-8");
                    xhr.setRequestHeader("Authorization", "Basic " + base64);
            },
            complete: function(xhr, status) {
                    if (status === 'error' || !xhr.responseText) {
                        $('.result').html('<p><strong>Error:</strong> ' + status + "</p><p><strong>Response Text</strong>:<br /><pre>"+xhr.responseText+"
");} else {var data = xhr.responseText; $ ('. Result'). Html ("
"+data+"
");}}});});

1 Ответ

1 голос
/ 28 марта 2012

Обычно проблема в том, что запрошенный вами ресурс не поддерживает JSONP, поэтому он возвращает файл XML вместо скрипта. Когда вы указываете JSONP в запросе ajax, функция ожидает данные, заключенные в javascript, иначе это не будет работать.

Конечно, вы не можете запрашивать XML-файл напрямую без JSONP, потому что междоменный доступ к ресурсам, отличным от сценария, не разрешен в браузерах из соображений безопасности.

...