Невозможно выполнить файл php с помощью XMLHttpRequest

Я создаю форму, которая на кнопке вызывает файл javascript для отправки содержимого формы в файл php. Моя проблема заключается в том, что это работает в IE, и не будет работать в Opera, Google Chrome или Firefox. При анализе консоли в Google Chrome я получаю эту ошибку: (Примечание: я сократил путь к localhost и удалил свой IP-адрес)

XMLHttpRequest cannot load http://localhost/browse-to-file.php.  No 'Access-Control-Allow-Origin' header is present on requested resource. Origin 'http://internal-ip-address' is therefore not allowed

Кроме того, я вывел коды состояния xmlHttpRequest() следующим образом:

Ready State: 4
Status: 0

Я проверяю, что статус должен быть 200.

Есть ли простой способ исправить это? Я полностью потерян здесь.

Редактировать:

Я обнаружил ошибку в своем коде, я звонил localhost, когда я должен был использовать относительный путь (duh). Теперь, когда это исправлено, я получаю еще одну ошибку.

Uncaught TypeError: Cannot set property 'innerHTML' of null
xmlHttp.onreadystatechange

Мой код выглядит следующим образом:

xmlHttp = new XMLHttpRequest();

И тогда часть, которая не так:

  xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState==4){
    if(xmlHttp.status==200){
        document.getElementById("result").innerHTML=xmlHttp.responseText;          
    } else{
        console.error("Ready State: " + xmlHttp.readyState)
        console.error("Status: " + xmlHttp.status)
        console.error("Status Text: " + xmlHttp.statusText);

        alert("An error has occured making the request")

    }
}

1 ответ

Решение

Ответ был действительно довольно прост. Сначала мне пришлось изменить прямую страницу с "localhost" на фактический IP-адрес моего сервера. Затем я понял, что пытался получить идентификатор элемента "результат", это был неправильный идентификатор. Но странно, что это действительно работает на IE10.

xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
    document.getElementById("result").innerHTML=xmlHttp.responseText;          
} else{
    console.error("Ready State: " + xmlHttp.readyState)
    console.error("Status: " + xmlHttp.status)
    console.error("Status Text: " + xmlHttp.statusText);

    alert("An error has occured making the request")

}
}

После изменения "результата" выше на правильный идентификатор, это работает.

Другие вопросы по тегам