2 javascript php ajax request undefined
出于某种原因,undefined如果我返回值,我总是收到,但如果我试图在警报中显示它,我会收到php值.
function getXMLHttp() {
var xmlHttp
try {
//Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
} catch(e) {
//Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
//Browser does not support AJAX
return false;
}
}
}
return xmlHttp;
}
Run Code Online (Sandbox Code Playgroud)
function isUsernameExists() {
var xmlHttp = getXMLHttp();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
handleResponse(xmlHttp.responseText);
}
}
var str = document.getElementById('username').value.toString();
xmlHttp.open("GET", "ajax.php?username="+str, true);
xmlHttp.send(null);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
function handleResponse(response) {
return response.toString();
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
盖伊多尔
看起来您正在尝试从此函数读取返回值:
function isUsernameExists() {
Run Code Online (Sandbox Code Playgroud)
它没有return声明,所以它永远都是undefined.
我猜你期望这个return语句传递你想要的值:
return xmlHttp.responseText.toString();
Run Code Online (Sandbox Code Playgroud)
但这是此功能的一部分:
xmlHttp.onreadystatechange = function() {
Run Code Online (Sandbox Code Playgroud)
当readystatechange事件触发时,会自动调用,而不是通过您进行的任何函数调用.
异步JavaScript和XML很少使用XML,但它是异步的.您想要对所获取的数据执行的任何操作都需要由您分配给onreadystatechange的回调函数完成.它可以调用其他函数,但它不能返回任何内容(至少在任何有用的地方都不会返回).