2015-03-20 3 views
0

У меня есть код, который идет как это:XMLHttpRequest статус всегда равен нулю, когда светлячок и хром

<script> 
var xmlhttp = new XMLHttpRequest(); 
var url = "http://localhost:9080/MyRestService/viewitems"; 

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     doSomeFunction(xmlhttp.responseText); 
    } 
} 

xmlhttp.open("GET", url, true); 
xmlhttp.send(); 

function doSomeFunction(response) { 

    var arr = JSON.parse(response); 
    var i; 
    var out = "<table>"; 

    for(i = 0; i < arr.length; i++) { 
     out += "<tr><td>" + 
     arr[i].title + 
     "</td><td>" + 
     arr[i].singer + 
     "</td></tr>"; 
    } 
    out += "</table>"; 

    document.getElementById("id01").innerHTML = out; 
} 
</script> 

прекрасно работает на IE, но не работает в Chrome и Firefox. В основном, что происходит, xmlhttp.status возвращается всегда в Firefox и Chrome. В IE он возвращает 200, что позволяет начать обработку.

Редакцией: добавить весь код HTML страницы

EDITED: Я решил эту проблему. Проблема возникла из-за междоменного скриптинга. Я добавил параметр контроля доступа заголовка ответа в мои полезные коды обслуживания, чтобы исправить проблему.

+0

Где находится остальная часть кода, который фактически отправляет XMLHttpRequest? – jfriend00

+0

не используют синхронизацию ajax, chrome и firefox имеют право не предоставлять вам статус для таких запросов. – dandavis

+0

jfriend: Я добавил остальную часть кода –

ответ

0

Возможно, Firefox и Chrome кэшируют сайт. Если сервер затем обнаруживает, что ничего не изменилось, он не отвечает кодом состояния 200, а скорее кодом состояния 304 «Не изменен». Сам ответ будет загружен из кеша.

+0

, чтобы исправить эту проблему, я могу просто поработать с настройками firefox и chrome? –

+0

статус 304 не равен 0, хотя ... – Greg

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