adac84
Новичок
AJAX XMLHttpRequest.readyState выдает 4, но responseText содержит полностью php файл
есть код:
ajax script
----------------------
------------
login.php
так вот, status возварщает ноль, вместо 200 или семейства 400х кодов из заголовка.
если я не делаю проверку статуса, и вывожу responseText, то выводится в сообщении вся страница lohin.php
не могу понять в чем проблема?
есть код:
ajax script
----------------------
PHP:
function createObject() {
var request_type;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
request_type = new ActiveXObject("Microsoft.XMLHTTP");
}else{
request_type = new XMLHttpRequest();
}
return request_type;
}
var http = createObject();
var nocache = 0;
function login() {
// Optional: Show a waiting message in the layer with ID ajax_response
document.getElementById('login_response').innerHTML = "Loading..."
// Required: verify that all fileds is not empty. Use encodeURI() to solve some issues about character encoding.
var email = encodeURI(document.getElementById('emailLogin').value);
var psw = encodeURI(document.getElementById('pswLogin').value);
// Set te random number to add to URL request
nocache = Math.random();
// Pass the login variables like URL variable
http.open('GET', 'login.php?email='+email+'&psw='+psw+'&nocache = '+nocache);
http.onreadystatechange = loginReply;// Передаем ссылку на функцию
http.send(null);
}
function loginReply() {
alert(http.readyState);
if(http.readyState == 4){
if (http.status == 200) {
var response = http.responseText;
alert (http.responseText);
if(response == 0){
// if login fails
document.getElementById('login_response').innerHTML = 'Login failed! Verify user and password';
// else if login is ok show a message: "Welcome + the user name".
} else {
document.getElementById('login_response').innerHTML = 'Welcome'+response;
}
} else
{ alert("status is " + http.status);}
}
}
login.php
PHP:
<?php include('config.php');
header('content-type: text/plain; charset=utf-8');
?>
<!-- Verify if user exists for login -->
<?php
if(isset($_GET['email']) && isset($_GET['psw'])){
$email = $_GET['email'];
$psw = $_GET['psw'];
$getUser_sql = 'SELECT * FROM USER WHERE email="'. $email . '" AND psw = "' . $psw . '"';
$getUser = mysql_query($getUser_sql);
$getUser_result = mysql_fetch_assoc($getUser);
$getUser_RecordCount = mysql_num_rows($getUser);
if($getUser_RecordCount < 1){ echo '0';} else { echo $getUser_result['nick'];}
}
?>
если я не делаю проверку статуса, и вывожу responseText, то выводится в сообщении вся страница lohin.php
не могу понять в чем проблема?