простой Ajax (локальный): responseText пуст - PullRequest
0 голосов
/ 28 апреля 2011

Я пытался использовать пример из учебника, но текст ответа просто пуст. Если я пытаюсь с «alert», я получаю OK, но с responseText, всплывающее окно просто пусто, в нем ничего нет. Почему это?

function start(){  
var xhr = getXMLHttpRequest();  
var sVar1 = encodeURIComponent("firstContent");  
var sVar2 = encodeURIComponent("SecondContent");  
xhr.onreadystatechange = function() {  
    if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {  
        //alert("OK");  
                alert(xhr.responseText);  
    }  
}; 



xhr.open("GET", "handlingData.php?variable1=" + sVar1 + "&variable2= " + sVar2, true);  
xhr.send(null);  
}  

Функция 'start' вызывается отправителем:

form id="form_userlogin" onsubmit="start()"  

И страница PHP:

<?php
header("Content-Type: text/plain");  
$variable1 = (isset($_GET["variable1"])) ? $_GET["variable1"] : NULL;  
$variable2 = (isset($_GET["variable2"])) ? $_GET["variable2"] : NULL;  
if ($variable1 && $variable2) {  
    echo "OK";  
} else {  
    echo "FAIL";  
}  
?>   

Я думал, что будет хорошо следовать учебнику, но это не так; Подскажите, пожалуйста, видите ли вы что-то не так?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2011

Во многих браузерах настройки безопасности Javascript не позволяют сценариям, содержащимся на странице, загруженной по протоколу file:, выполнять вызовы Ajax. Если возможно, попробуйте загрузить страницу из места, где вы можете использовать протокол http:. На сайте разработчиков Apple, по адресу http://developer.apple.com/internet/webcontent/xmlhttpreq.html,, есть и другие соображения, которые могут привести к полученным результатам. (Прокрутите вниз до раздела «Проблемы безопасности».)

0 голосов
/ 28 апреля 2011

Эй, чувак, могу ли я предложить что-нибудь сделать, чтобы сделать вашу жизнь намного проще?

Попробуйте библиотеку ajax jQuery - так просто

$.GET( url, {var1: val1, var2: val2}, function(data){ // do something with the data given back });

в вашем случае ...

$.GET(
   'http://yoursite/ajaxfunction',
   {get_var1: value1, get_var2: value2},
   function (data) {
      alert(data);
   });
...