2012-03-27 3 views
0

Я успешно просил в файл Basecamp XML через AJAX, но он выдает ошибку (в Google Chrome):Проблема с «неперехваченным SyntaxError: Неожиданный токен <»

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

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

Вот код JQuery:

$(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+"</pre></p>"); 
        } else { 
         var data = xhr.responseText; 
         $('.result').html("<pre>"+data+"</pre>"); 
        } 
      } 
      }); 
    }); 
+0

просит пароль .. – Niko

ответ

1

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

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

+0

Спасибо! Есть ли способ запросить XML с помощью JSONP? – elin15

+0

Как я уже сказал, вы не можете запросить междоменные ресурсы, отличные от javascript, так что если поставщик ресурса (basecamp здесь) поддерживает JSONP, который будет обертывать xml в объект javascript, тогда вы можете получить объект и извлечь из него xml-контент. Или вы можете настроить какой-то прокси-сервер, который позволит вам запрашивать ресурс из того же домена, что и ваша страница, а затем вы можете напрямую запросить XML-код без проблем. –

Смежные вопросы