AJAX请求返回'undefined'

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)

谢谢,

盖伊多尔

Que*_*tin 5

看起来您正在尝试从此函数读取返回值:

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的回调函数完成.它可以调用其他函数,但它不能返回任何内容(至少在任何有用的地方都不会返回).