如何根据 jQuery 请求从 ASP Classic 获得响应
How to get response from ASP Classic on jQuery request
我已经构建了下面的 jQuery,以便在单击按钮。
我的目标是检查数据库中的某个字段是否已更改,如果 5 秒后没有再次询问,如果它更改并且值为 1 我们就成功了并且应该 return 一些额外的运行 页面 jQuery 的值,如果值为 0 则出现错误,我需要 return 该信息,但直到我在 table 它应该暂停 5 秒,然后 运行 再次请求,直到我得到响应。
我已经尝试使用原生 ASP Classic Response 和 JSON,但在这一点上,如果我在 setInterval(function(){
之后放置警报,它似乎 returns,但不是在 function RequestValueFromTable()
之后,所以我猜测最后一个函数有一些错误,但我似乎无法弄清楚为什么,因为我在控制台中没有收到任何错误。
所以我的问题是:
- 我在
function RequestValueFromTable()
及以下做错了什么?
- 将响应从 ASP 数据库查询发送回 jQuery 的正确方法是什么?
我的jQuery:
function RunTableEntryValidation()
{
setInterval(function(){
function RequestValueFromTable()
{
var url="check_usercreation_progress.asp?id=<%=objGetEmployeeName("ID")%>";
$.get(url,{},verifyDb);
}
function verifyDb(response)
{
if (response==1)
{
clearInterval();
alert("I have the value");
//The value exists here I will run function
}
else if (response==0)
{
clearInterval();
alert("I do not have the value");
}
else
{
};
};
}, 5000);
};
check_usercreation_progress.asp:
<%@ Language=VBScript %>
<%
option explicit
Response.Expires = -1
Server.ScriptTimeout = 600
Session.CodePage = 65001
Response.CharSet = "UTF-8"
Dim CheckUserCreationStatus
Set CheckUserCreationStatus = Server.CreateObject("ADODB.Connection")
CheckUserCreationStatus.ConnectionString="Provider=SQLOLEDB; DATA SOURCE=<SERVER>;UID=SA;PWD=<PASSWORD>;DATABASE=<DATABASE>"
CheckUserCreationStatus.Open
Dim CheckUserCreationStatusSQL, CheckUserCreationStatusObj
CheckUserCreationStatusSQL = "SELECT * from EFP_EmploymentUser WHERE ID = " & Request.QueryString("id") & ";"
Set CheckUserCreationStatusObj = CheckUserCreationStatus.Execute(CheckUserCreationStatusSQL)
IF CheckUserCreationStatusObj("HasChachedAD") = 1 THEN
Response.Write "1"
ELSEIF CheckUserCreationStatusObj("HasChachedAD") = 0 THEN
Response.Write "0"
ELSE
END IF
CheckUserCreationStatus.Close
Set CheckUserCreationStatus = Nothing
%>
更新了下面的代码:
function RunTableEntryValidation()
{
setInterval(function(){
console.log('setInterval was entered');
function RequestValueFromTable()
{
var url="check_usercreation_progress.asp?id=<%=objGetEmployeeName("ID")%>";
$.get(url,{},verifyDb);
console.log('RequestValueFromTable was entered');
}
function verifyDb(response)
{
console.log('verifyDb was entered');
if (response.result == 1)
{
console.log('Value 1 was returned');
alert("I have the value");
clearInterval();
}
else if (response.result == 0)
{
console.log('Value 0 was returned');
alert("I do not have the value");
clearInterval();
}
else
console.log('No Value was returned');
{
};
};
}, 5000);
};
<%@ Language=VBScript %>
<%
option explicit
Response.Expires = -1
Server.ScriptTimeout = 600
Session.CodePage = 65001
Response.CharSet = "UTF-8"
Dim CheckUserCreationStatus
Set CheckUserCreationStatus = Server.CreateObject("ADODB.Connection")
CheckUserCreationStatus.ConnectionString="Provider=SQLOLEDB; DATA SOURCE=<SERVER>;UID=SA;PWD=<PASSWORD>;DATABASE=<DATABASE>"
CheckUserCreationStatus.Open
Dim CheckUserCreationStatusSQL, CheckUserCreationStatusObj
CheckUserCreationStatusSQL = "SELECT * from EFP_EmploymentUser WHERE ID = " & Request.QueryString("ID") & ";"
Set CheckUserCreationStatusObj = CheckUserCreationStatus.Execute(CheckUserCreationStatusSQL)
IF CheckUserCreationStatusObj("ADCreationStatus") = 1 THEN
Response.Write "{ ""result"": 1 }"
ELSEIF CheckUserCreationStatusObj("ADCreationStatus") = 0 THEN
Response.Write "{ ""result"": 0 }"
ELSE
Response.Write "{ ""result"": ""empty"" }"
END IF
CheckUserCreationStatus.Close
Set CheckUserCreationStatus = Nothing
%>
解决方案是通过以下步骤深入分析的:
- Response.Write in ASP 页面应该是 JSON 格式的响应:
Response.Write "{ ""result"": 1 }"
RequestValueFromTable()
之后未被调用
setInterval(function(){
var thejson = JSON.parse(response)
需要在后面定义
function verifyDb(response)
并且 IF 句子更改为 if (thejson.result == 1)
工作代码:
function RunTableEntryValidation()
{
setInterval(function(){
console.log('setInterval was entered');
RequestValueFromTable();
function RequestValueFromTable()
{
var url="check_usercreation_progress.asp?id=<%=objGetEmployeeName("ID")%>";
$.get(url,{},verifyDb);
console.log('RequestValueFromTable was entered');
}
function verifyDb(response)
{
var thejson = JSON.parse(response)
console.log('verifyDb was entered');
console.log(response.result)
if (thejson.result == 1)
{
clearInterval();
console.log('Value 1 was returned');
alert("I have the value");
}
else if (thejson.result == 0)
{
clearInterval();
console.log('Value 0 was returned');
alert("I do not have the value");
}
else
console.log('No Value was returned');
{
};
};
}, 5000);
};
<%@ Language=VBScript %>
<%
option explicit
Response.Expires = -1
Server.ScriptTimeout = 600
Session.CodePage = 65001
Response.CharSet = "UTF-8"
Dim CheckUserCreationStatus
Set CheckUserCreationStatus = Server.CreateObject("ADODB.Connection")
CheckUserCreationStatus.ConnectionString="Provider=SQLOLEDB; DATA SOURCE=<SERVER>;UID=SA;PWD=<PASSWORD>;DATABASE=<DATABASE>"
CheckUserCreationStatus.Open
Dim CheckUserCreationStatusSQL, CheckUserCreationStatusObj
CheckUserCreationStatusSQL = "SELECT * from EFP_EmploymentUser WHERE ID = " & Request.QueryString("ID") & ";"
Set CheckUserCreationStatusObj = CheckUserCreationStatus.Execute(CheckUserCreationStatusSQL)
IF CheckUserCreationStatusObj("ADCreationStatus") = 1 THEN
Response.Write "{ ""result"": 1 }"
ELSEIF CheckUserCreationStatusObj("ADCreationStatus") = 0 THEN
Response.Write "{ ""result"": 0 }"
ELSE
Response.Write "{ ""result"": ""empty"" }"
END IF
CheckUserCreationStatus.Close
Set CheckUserCreationStatus = Nothing
%>
我已经构建了下面的 jQuery,以便在单击按钮。
我的目标是检查数据库中的某个字段是否已更改,如果 5 秒后没有再次询问,如果它更改并且值为 1 我们就成功了并且应该 return 一些额外的运行 页面 jQuery 的值,如果值为 0 则出现错误,我需要 return 该信息,但直到我在 table 它应该暂停 5 秒,然后 运行 再次请求,直到我得到响应。
我已经尝试使用原生 ASP Classic Response 和 JSON,但在这一点上,如果我在 setInterval(function(){
之后放置警报,它似乎 returns,但不是在 function RequestValueFromTable()
之后,所以我猜测最后一个函数有一些错误,但我似乎无法弄清楚为什么,因为我在控制台中没有收到任何错误。
所以我的问题是:
- 我在
function RequestValueFromTable()
及以下做错了什么? - 将响应从 ASP 数据库查询发送回 jQuery 的正确方法是什么?
我的jQuery:
function RunTableEntryValidation()
{
setInterval(function(){
function RequestValueFromTable()
{
var url="check_usercreation_progress.asp?id=<%=objGetEmployeeName("ID")%>";
$.get(url,{},verifyDb);
}
function verifyDb(response)
{
if (response==1)
{
clearInterval();
alert("I have the value");
//The value exists here I will run function
}
else if (response==0)
{
clearInterval();
alert("I do not have the value");
}
else
{
};
};
}, 5000);
};
check_usercreation_progress.asp:
<%@ Language=VBScript %>
<%
option explicit
Response.Expires = -1
Server.ScriptTimeout = 600
Session.CodePage = 65001
Response.CharSet = "UTF-8"
Dim CheckUserCreationStatus
Set CheckUserCreationStatus = Server.CreateObject("ADODB.Connection")
CheckUserCreationStatus.ConnectionString="Provider=SQLOLEDB; DATA SOURCE=<SERVER>;UID=SA;PWD=<PASSWORD>;DATABASE=<DATABASE>"
CheckUserCreationStatus.Open
Dim CheckUserCreationStatusSQL, CheckUserCreationStatusObj
CheckUserCreationStatusSQL = "SELECT * from EFP_EmploymentUser WHERE ID = " & Request.QueryString("id") & ";"
Set CheckUserCreationStatusObj = CheckUserCreationStatus.Execute(CheckUserCreationStatusSQL)
IF CheckUserCreationStatusObj("HasChachedAD") = 1 THEN
Response.Write "1"
ELSEIF CheckUserCreationStatusObj("HasChachedAD") = 0 THEN
Response.Write "0"
ELSE
END IF
CheckUserCreationStatus.Close
Set CheckUserCreationStatus = Nothing
%>
更新了下面的代码:
function RunTableEntryValidation()
{
setInterval(function(){
console.log('setInterval was entered');
function RequestValueFromTable()
{
var url="check_usercreation_progress.asp?id=<%=objGetEmployeeName("ID")%>";
$.get(url,{},verifyDb);
console.log('RequestValueFromTable was entered');
}
function verifyDb(response)
{
console.log('verifyDb was entered');
if (response.result == 1)
{
console.log('Value 1 was returned');
alert("I have the value");
clearInterval();
}
else if (response.result == 0)
{
console.log('Value 0 was returned');
alert("I do not have the value");
clearInterval();
}
else
console.log('No Value was returned');
{
};
};
}, 5000);
};
<%@ Language=VBScript %>
<%
option explicit
Response.Expires = -1
Server.ScriptTimeout = 600
Session.CodePage = 65001
Response.CharSet = "UTF-8"
Dim CheckUserCreationStatus
Set CheckUserCreationStatus = Server.CreateObject("ADODB.Connection")
CheckUserCreationStatus.ConnectionString="Provider=SQLOLEDB; DATA SOURCE=<SERVER>;UID=SA;PWD=<PASSWORD>;DATABASE=<DATABASE>"
CheckUserCreationStatus.Open
Dim CheckUserCreationStatusSQL, CheckUserCreationStatusObj
CheckUserCreationStatusSQL = "SELECT * from EFP_EmploymentUser WHERE ID = " & Request.QueryString("ID") & ";"
Set CheckUserCreationStatusObj = CheckUserCreationStatus.Execute(CheckUserCreationStatusSQL)
IF CheckUserCreationStatusObj("ADCreationStatus") = 1 THEN
Response.Write "{ ""result"": 1 }"
ELSEIF CheckUserCreationStatusObj("ADCreationStatus") = 0 THEN
Response.Write "{ ""result"": 0 }"
ELSE
Response.Write "{ ""result"": ""empty"" }"
END IF
CheckUserCreationStatus.Close
Set CheckUserCreationStatus = Nothing
%>
解决方案是通过以下步骤深入分析的:
- Response.Write in ASP 页面应该是 JSON 格式的响应:
Response.Write "{ ""result"": 1 }"
RequestValueFromTable()
之后未被调用setInterval(function(){
var thejson = JSON.parse(response)
需要在后面定义function verifyDb(response)
并且 IF 句子更改为if (thejson.result == 1)
工作代码:
function RunTableEntryValidation()
{
setInterval(function(){
console.log('setInterval was entered');
RequestValueFromTable();
function RequestValueFromTable()
{
var url="check_usercreation_progress.asp?id=<%=objGetEmployeeName("ID")%>";
$.get(url,{},verifyDb);
console.log('RequestValueFromTable was entered');
}
function verifyDb(response)
{
var thejson = JSON.parse(response)
console.log('verifyDb was entered');
console.log(response.result)
if (thejson.result == 1)
{
clearInterval();
console.log('Value 1 was returned');
alert("I have the value");
}
else if (thejson.result == 0)
{
clearInterval();
console.log('Value 0 was returned');
alert("I do not have the value");
}
else
console.log('No Value was returned');
{
};
};
}, 5000);
};
<%@ Language=VBScript %>
<%
option explicit
Response.Expires = -1
Server.ScriptTimeout = 600
Session.CodePage = 65001
Response.CharSet = "UTF-8"
Dim CheckUserCreationStatus
Set CheckUserCreationStatus = Server.CreateObject("ADODB.Connection")
CheckUserCreationStatus.ConnectionString="Provider=SQLOLEDB; DATA SOURCE=<SERVER>;UID=SA;PWD=<PASSWORD>;DATABASE=<DATABASE>"
CheckUserCreationStatus.Open
Dim CheckUserCreationStatusSQL, CheckUserCreationStatusObj
CheckUserCreationStatusSQL = "SELECT * from EFP_EmploymentUser WHERE ID = " & Request.QueryString("ID") & ";"
Set CheckUserCreationStatusObj = CheckUserCreationStatus.Execute(CheckUserCreationStatusSQL)
IF CheckUserCreationStatusObj("ADCreationStatus") = 1 THEN
Response.Write "{ ""result"": 1 }"
ELSEIF CheckUserCreationStatusObj("ADCreationStatus") = 0 THEN
Response.Write "{ ""result"": 0 }"
ELSE
Response.Write "{ ""result"": ""empty"" }"
END IF
CheckUserCreationStatus.Close
Set CheckUserCreationStatus = Nothing
%>