request.responseText получает правильные данные, но JavaScript не может их понять

Я новичок в AJAX и в настоящее время изучаю его Head First AJAX, Проблема, с которой я сталкиваюсь, действительно странная. Я разработал простую программу, которая создает запрос через JavaScript, а затем показывает результат.

main.js

window.onload = initPage;
function initPage() {
request = createRequest();
if(request == null) {
alert("request could not be created");
}
else {
var url = "requestMe.php";
request.onreadystatechange = showResult;
request.open("GET", url, true);
request.send(null);
}
}

function showResult() {
if(request.readyState == 4) {
if(request.status == 200) {
if(request.responseText == "okay") {
alert("A successful request was returned");
}
else {
alert("ALERT : " + request.responseText);
}
}
else {
alert("Request status received was not correct");
}
}
}

//--function to create request objects--
function createRequest(){
try{
request = new XMLHttpRequest();
}
catch(tryMS){
try{
request = new ActiveXObject("Msxm12.XMLHTTP");
}
catch(otherMS){
try{
request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(failed){
request = null;
}
}
}
return request;
}

Теперь вот скрипт php.

requestMe.php

<?php
echo 'okay';
?>

Этот код должен дать предупреждение A successful request was returned

Но вместо этого это дает результат ALERT : okay

Странно то, что тот же самый код работал вчера для меня, когда я попробовал его, и теперь он дает мне этот результат. Я пытался создавать похожие программы, и все они показывают мне такое странное поведение. responseText получил правильно, потому что он добавляет okay после ALERT :. Что я делаю не так в коде? Почему это идет к else часть, когда responseText получил правильно?

Любая помощь? Заранее спасибо.

0

Решение

Я лично сделал бы это, используя Функция jQuery Ajax следующим образом:

document.addEventListener("DOMContentLoaded", function()
{
$.ajax({
"url": "requestMe.php"}).done(function(data)
{
if(data == "okay")
{
alert("A successful request was returned");
} else
{
alert("ALERT : " + data);
}
}).fail(function()
{
alert("Connection Failed");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
0

Другие решения

Сделать одну вещь добавить выход; после эхо «хорошо»;

Проблема в вашем коде после ?> есть свободное место, вы можете исправить это, удалив ?> или удаление дополнительного пространства после ?>.

Я надеюсь, что это исправит вашу проблему.

0

По вопросам рекламы [email protected]