2015-08-28 3 views
0

Я новичок в AJAX и изучаю его сейчас с Head First AJAX. Проблема, с которой я сталкиваюсь, действительно странная. Я разработал простую программу, которая создает запрос через JavaScript, а затем показывает результат.request.responseText получает правильные данные, но 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 после . Что я здесь делаю в коде? Почему это происходит с участком else, когда получено responseText?

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

ответ

0

Сделайте одно добавление выход; после echo 'okay';

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

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

+0

Exaclty! Это было хорошо для меня тоже. Но он внезапно сломался. Я использую Aptana Studio на Ubuntu 15.04, и я использую FireFox Browser. –

+0

, пожалуйста, поделитесь своим кодом внутри requestMe.php, скопировав его. –

+0

Я проверил и дважды проверил его. Нет пробела или других символов при эхо –

0

лично я бы сделать это с помощью jQuery's Ajax Function следующим образом:

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>

Я не проверял этот скрипт, но он теоретически должен работать хорошо.

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