Я пробовал все предлагаемое в вопросах подобного характера, но этот очень простой код просто не работает. Я просто хочу получить сообщение от php-кода в том же файле, используя XMLHttpRequest
.javascript с XMLHttpRequest не работает
<!DOCTYPE html>
<head></head>
<body>
<div id="qwer" style="height:50px;width:40px"></div>
<script type="text/javascript">
function check() {
var ualias=document.getElementById('ualias').value;
var resu=document.getElementById("qwer");
var params="username="+ualias;
var hm = new XMLHttpRequest();
var url = "http://'my-domain-name'/try.php";
hm.open("GET", url+"?"+params, true);
hm.onreadystatechange = function(){
if(hm.readyState == 4 && hm.status == 200) {
var return_data = hm.responseText;
resu.innerHTML=return_data;
} else {
resu.innerHTML="error";
}
hm.send(null);
resu.innerHTML="CHECKING...";
}
}
</script>
<?php if(isset($_GET['username'])) {
$u=$_GET['username'];
echo $u;
exit();
} ?>
<input id='ualias' type='text' onblur=''>
<button type='button' onclick="check()">Go!</button>
</body>
</html>
браузер (Google Chrome) не показывает ничего для onclick
события.
В конце концов он работал. Я сделал следующие изменения.
<!DOCTYPE html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
function check()
{
var ualias=document.getElementById('ualias').value;
var resu=document.getElementById("qwer");
var params="username="+ualias;
var hm = new XMLHttpRequest();
var url = "http://www.websamaj.in/try.php";
hm.open("GET", url+"?"+params, true);
hm.onreadystatechange = function(){
if(hm.readyState == 4 && hm.status == 200)
{
var return_data = hm.responseText;
resu.innerHTML=return_data;
}
}
hm.send(null);
resu.innerHTML="wait...";
}
</script>
<?php
if(isset($_GET['username']))
{
$u=$_GET['username'];
echo $u.",you are finally here!:)";
exit();
}
?>
<input id='ualias' type='text' onblur=''>
<button type='button' onclick="check()">Go!</button>
<div id="qwer" style="height:50px;width:100px;background-color:#CCC;"></div>
</body>
</html>
По-видимому, условие else там, в функции onreadystatechange, вызывало проблему. Мне бы это понравилось, если бы кто-нибудь мог сказать мне, почему именно это создает проблему. Насколько я знаю, событие onreadystatechange вызывается каждый раз, когда изменяется состояние. Поэтому в моем предыдущем коде «ошибка» должна быть перезаписана трижды в div, а затем, когда состояние изменится на 4 и 200, responseText должен быть перезаписан, так как я не использовал append. Таким образом, объяснение будет высоко признано. Спасибо!
Вы уверены, что это проблема js, а не проблема php? –
Есть ли ошибка в консоли отладки? Можете ли вы проверить запрос на отправку в сетевой консоли –
Это не нужно в вашем PHP: exit(); – Zarathuztra