gpt4 book ai didi

javascript - 经典 ASP : how to convert a RecordSet to json notation using AXE json implementation

转载 作者:行者123 更新时间:2023-12-04 05:57:30 25 4
gpt4 key购买 nike

我正在使用 jQuery 和其他一些工具使用 ajax 做一个应用程序,在某些部分我想使用经典的 ASP 后端使用 ajax 检索数据,我看到在 AX 中存在一个 JSON 类的良好实现(Asp 极限版)框架,我使用了它,但目前我不明白如何很好地使用它。

编辑 :基于 JSON.Stringify fails on Scripting.Dictionary objects 线程的 正确答案 ,我决定制作一个自定义函数来处理记录集。

编辑 2: 现在我在函数 JSONStringify(object) 中调用 JSON.stringify 时丢失了值数据。

当记录集作为值传递给 JSONStringify 时一切正常,但是当 JSON.stringify 被执行时,必须包含记录集的“值”参数变为未定义

我在期待什么(示例)

从 SQL 查询 SELECT name, tel FROM users 传递 Recordset 看到这样的输出

[
{"name":"Jonh Smith", "tel":"12345678"},
{"name":"April Michelson", "tel":"77788802"},
...
]

传递字典并查看基于字典中声明的元素的类似内容。
{
"element1":"value1",
"element2":"value2",
"element3":"value3",
"element4":"value4",
"element5":"value5"
}

如果我喜欢支持其他类型的对象,我可以扩展功能

源代码

getcatalogos.asp
<!--#include file="../includes/conexion.asp" -->
<!--#include file="../includes/json2.asp" -->
<!--#include file="../includes/json-stringify-parser.asp" -->
<%
Response.ContentType = "application/json"
dim aVals(2)

function getCatalogo(tipo, params)
Dim oConn,oCmd,sSQL,oRs,cont2
Dim aData,oPar,cont
dim Info

set oConn = Server.CreateObject("ADODB.Connection")
set oCmd = Server.CreateObject("ADODB.Command")

sWhere = ""

oConn.ConnectionString = strcon
oConn.Open
Set oCmd.ActiveConnection = oConn

select case tipo
case "g"
sSQL = " SELECT cve_gr, descr FROM gr ORDER BY descr ;"
case "z"
sSQL = " SELECT cve_zn, descr FROM zn WHERE cve_gr = ? ORDER BY descr ;"
if IsArray(params) Then
Set oPar=oCmd.CreateParameter (params(0),129,1,2,params(1))
oCmd.Parameters.Append(oPar)
End if
case else
getCatalogo = false
exit function
end select

oCmd.CommandText = sSQL
Set oRs = oCmd.Execute()
if Not oRs.EOF Then
response.write(JSONStringify(oRs))
getCatalogo = true
else
getCatalogo = false
end if
oConn.Close
end function

aVals(0) = "cve_gr"
aVals(1) = request.querystring("gr")
if Not getCatalogo(request.querystring("t"),aVals) Then
%>error<%
end if

%>

json-stringify-parser.asp
<!--#include file="vbsTyper.asp" -->
<script runat="server" language="JScript">

function JSONStringify(object) {
VBSTypeName(object);
return JSON.stringify(object,stringifyData);
}

function stringifyData(holder, key, value) {
var sType = '';
var result;

//response.write('pre...holder=' + holder + ',key=' + key + ',value=' + value);
sType = VBSTypeName(value);
//response.write('post =' + sType);

//response.write(sType);
switch(sType){
case 'Dictionary':
result = '{';
for(var enr = new Enumerator(value); !enr.atEnd(); enr.moveNext()){
key = enr.item();
result += '"' + key + '": ' + JSON.stringify(value.Item(key));
};
result += '}';
return(result);
break;
case 'Recordset':
response.write('here!!!');
var sTemp = '';
result = '{';
while(!value.EOF){
if(Len(result) > 0){
result += ',';
}
result += '{';
for (var i = value.Fields.Count - 1; i >= 0; i--){
if(len(sTemp) > 0){
sTemp += ',';
}
sTemp += '"' + value.Fields(i).name + '":' + JSON.stringify( value.Fields(i).value);
};
result += '}';
}
result += '}';
return result;
break;
default:
//response.write(sType);
return(value);
}
// return the value to let it be processed in the usual way
return result;
}

</script>

vbsTyper.asp
<%
Function VBSTypeName(Obj)
dim sType
sType = Cstr(TypeName(Obj))
response.write(sType)
VBSTypeName = sType
End Function
%>

最佳答案

这个:

response.write(JSON.stringify(oRs))

应该是这样的:
Do Until oRS.EOF
response.write(JSON.stringify(oRs("cve_gr") & ":" & oRs("descr"))
oRS.MoveNext
Loop

关于javascript - 经典 ASP : how to convert a RecordSet to json notation using AXE json implementation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332909/

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