我的计算机上运行了一个本地服务器,它有一个内置的REST API。 api的基本网址是:http://127.0.0.1:8090/ehr/api/v1。现在我想使用这个api为这个服务器创建一个客户端应用程序。要登录此服务器,api url是使用POST方法的baseurl / login。它将用户名,密码和组织作为参数,如果登录成功,则在json中返回auth令牌。现在我想在html和javascript中创建一个表单,如果响应是一个auth令牌,它将询问用户名,密码,组织并登录用户,否则如果错误中的响应而不是令牌,用户将无法登录in。这个表单的html和javascript代码应该是什么?我键入以下代码来输出身份验证令牌但它没有显示任何结果。甚至控制台日志都是空的。
function loginfunc(){
var baseurl = "http://localhost:8090/ehr/api/v1";
var funcurl = "/login";
var username = document.getElementById("username");
var password = document.getElementById("password");
var organization = document.getElementById("organization");
var url = baseurl+funcurl+"?username="+username+"&password="+password+"&organization="+organization;
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if(xmlHttp.readyState === XMLHttpRequest.DONE && xmlHttp.status === 200) {
console.log(xmlHttp.responseText);
}
};
xmlHttp.open( "POST", url, true); // false for synchronous request
xmlHttp.send( null );
document.write(xmlHttp.responseText);
}
编辑:我根据对此的建议更改了登录功能:
DECLARE @EmployeeCode BIGINT = 1234,
@FirstName VARCHAR(250) = 'FirstName',
@MiddleName VARCHAR(250) = 'LastName',
@LastName VARCHAR(250) = 'LastName',
@Nationality VARCHAR(250) = 'Nationality',
@BloodGroup VARCHAR(4) = 'A+',
@Gender VARCHAR(7) = 'Male'
IF NOT EXISTS ( SELECT tbTableName.EmployeeCode
FROM dbo.tbTableName tbTableName
WHERE tbTableName.EmployeeCode = @EmployeeCode)
BEGIN
INSERT INTO dbo.tbTableName (EmployeeCode, FirstName, MiddleName, LastName,Nationality, BloodGroup, Gender )
VALUES (@EmployeeCode, @FirstName, @MiddleName, @LastName, @Nationality, @BloodGroup, @Gender )
END
但是现在我在xmlHttp.send()函数中遇到401未经授权的错误。我无法理解为什么当我使用像失眠的REST客户端请求相同的URL时,它工作正常并返回auth令牌。
答案 0 :(得分:0)
您对服务器的请求是异步的,因此您的代码不能立即采取响应。这是使用回调完成的:
xmlHttp.onreadystatechange = function () {
if(xmlHttp.readyState === XMLHttpRequest.DONE && xmlHttp.status === 200) {
console.log(xmlHttp.responseText);
}
};