Ajax не будет отправлять на тот же URL, откуда он.Является ли это возможным - PullRequest
0 голосов
/ 20 августа 2011

Я пытаюсь отправить свой запрос Ajax на тот же URL, но Это не работает .. Если я поставлю php на другой URL и отправлю его, он будет работать. Я пытаюсь сохранить весь свой код на 1 странице. Возможно ли это?

********   thispage.php    *******
<?php
    $theData=$_GET["data"];
    if($theData != ""){
        echo $theData;
        exit;
    }
?>

<script>
function SendData(){
    if(window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else{// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

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

    var text = 'OK, it is working';
    xmlhttp.open("GET","thispage.php?data="+text,true); //send it to this page.
    xmlhttp.send();
}
</script>

<html>
    <input type="button" value="Send" onclick="SendData()"/>
<html>

Ответы [ 2 ]

0 голосов
/ 20 августа 2011

Да, это возможно.У вас есть правильная концепция, но реализация не совсем правильная.

vat text = 'OK, it's working';

Я не уверен, что это опечатка, но это, конечно, следует читать:

var text = 'OK, it's working';

Другая, более важная проблема заключается в том, что вы на самом деле не получаете ответ, используя Javascript.Вам нужно что-то вроде этого:

xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState == 4){
         // do something with the response
         alert(xmlhttp.responseText);
    }
}

Что он делает, так это устанавливает обработчик для завершения запроса.В вашем коде:

xmlhttp.open("GET","thispage.php?data="+text,true); //send it to this page.

Аргумент true, переданный xmlhttp.open, говорит ему сделать запрос асинхронным - другими словами, он не ожидает запросазакончить, прежде чем продолжить выполнение Javascript.Таким образом, нам нужно указать действие для события onreadystatechange, чтобы после завершения запроса мы действительно что-то делали с возвращенными данными.

0 голосов
/ 20 августа 2011

Попробуйте добавить выход;после эха $ theData;

if($theData != ""){
    echo $theData;
    exit;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...