gpt4 book ai didi

Javascript AJAX 请求函数不返回任何内容

转载 作者:行者123 更新时间:2023-12-03 12:04:11 24 4
gpt4 key购买 nike

我正在尝试制作一个注册页面,告诉用户他们选择的用户名是否是唯一的,而无需重新加载页面。 php 脚本“usernameAJAX.php”只是查询 SQL 数据库,如果用户名不唯一则返回“1”,如果用户名不唯一则返回“0”。由于某种原因,我创建的 usernameAJAX(username) 函数没有返回任何内容,甚至第三行的“bool”变量设置为“0”也没有返回。有人可以解释为什么会发生这种情况吗?

function usernameAJAX(username) {

var bool = "0";

params = "AJAXusername=" + username.value;
request = new ajaxRequest();
request.open("POST", "usernameAJAX.php", true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", params.length);
request.setRequestHeader("Connection", "close");

request.onreadystatechange = function()
{
if (this.readyState == 4)
if (this.status == 200)
if (this.responseText != null)
bool = this.responseText;
}
request.send(params);


function ajaxRequest()
{
try { var request = new XMLHttpRequest(); }
catch(e1) {
try { request = new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e2) {
try { request = new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e3) {
request = false;
} } }
return request;
}

return bool;

}

最佳答案

您的函数是正确的,但您必须删除 header Content-length 和 Connection。此外,您必须注意,您的函数将始终返回 0。如果您想对下载的值执行某些操作,则必须在此处执行:

function usernameAJAX(username, callback) {
...
if (this.responseText != null) {
bool = this.responseText;
callback(bool);
}
...
}


var show = function (bool) {
alert(bool);
};

// The execution continues in the callback function when bool is downloaded.
usernameAJAX("usuario", show);

如果要以传统方式返回bool值,则必须使用非异步请求,这样下载值时窗口会被阻塞,浪费了AJAX的优势。

关于Javascript AJAX 请求函数不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com