2015-10-20 111 views
0

我一直在试图最近使用AJAX的这个样本表格数据从一个http://www.example.com域比较SQL数据库。我的问题是readyState总是1,我的状态总是0.它分别期望4和200。它也总是返回responseText =“”我查看了所有的StackOverflow,但没有找到有用的帮助。AJAX/PHP/JS readyState = 1和Status = 0总是。无响应文本

我猛然一惊我的脑海里可能是什么问题,但我似乎无法得到它的工作。

*我也尝试在这两个JS和PHP设置文件权限,但它的作用是相同的。

*我使用的是专用的Web服务器来承载这一切,我没有问题,运行大部分的脚本。

// HTML GenerateRep.html

借口缺乏<和>标签丢失,代码将不会出现没有他们。

form id="formgen" onsubmit="GenRep(this)" 
....form stuff.... 
button id="submit" type="submit">Submit</button 

// JAVASCRIPT GenerateRep.js

function GenRep(formgen) { 

var email = formgen['repemail']; 
var hash = formgen['reppass']; 
var first = formgen['firstname']; 
var last = formgen['lastname']; 
var territory = formgen['territory']; 

hash.value = CryptoJS.SHA256(hash.value); 

var login = email + ";" + hash.value + ";" + first + ";" + last + ";" + territory; 

Login(login); 


} 

function Login(login) { 
    var xhttp = new XMLHttpRequest(); 
     xhttp.onreadystatechange = function() { 
      if (xhttp.readyState == 4 && xhttp.status == 200) { 
       if(xhttp.responseText == "VALID") { 
        window.location.href = "success.html"; 
       } else if (xhttp.responseText == "INVALID") { 
        $("#login_error").text("Failed! Plese check your info."); 
       } else { 
        window.location.href = "error.php"; 
       } 
      } 
}; 
xhttp.open("GET", "Validate.php?q=" + login, true); 
xhttp.send(); 
} 

// PHP Validate.php

<?php 
header('Access-Control-Allow-Origin: *'); 
include ("ConnectDB.php"); 

// Check connection 

if ($conn->connect_error) { 

die("Connection failed: " . $conn->connect_error); 

} 

//THIS IS A TEST TO SEE IF reponseText FUNCTIONS. IT DOES NOT. 
//echo "testecho"; 


$whole = $_REQUEST['q']; 

$userPass = explode (";", $whole); 


$sql1 = "SELECT UName FROM Reps WHERE UName = '$userPass[0]'"; 
$result = $conn->query($sql1); 

if ($result->num_rows > 0) { 
$conn->close(); 
echo "INVALID"; 

} else { 

$sql = "INSERT INTO Reps (UName, Pass, FName, LName, Territory) VALUES ('$userPass[0]', '$userPass[1]', '$userPass[2]', '$userPass[3]', $userPass[4])"; 

if ($conn->query($sql) === FALSE) { 
$conn->close(); 
echo "Error: " . $sql . "<br>" . $conn->error; 

} 


$conn->close(); 
echo "VALID"; 

} 
?> 
+0

如果粘贴到浏览器的GET请求http://yoursite.com/Validate.php?q=data运行正常的脚本? – Thesee

+0

您确定PHP正在运行并返回响应吗?我问的原因是因为你的readyState没有改变,这通常表示没有从服务器返回通信。 –

+0

@参见 - 是的,我能够让它运行没有问题。它完成了它需要做的并返回有效的内容。 –

回答

0

我以前 “评论”,而不是创建一个 “答案”,因为我并没有提出解决方案,只是一个调试步骤,以确保您的想法正在发生,实际上正在发生。

由于我的建议帮你找出问题,我创建的情况下,你想给我的“信用”这个“答案”。 :-)