条纹集成了传统的ASP [英] Stripe Integration with classic ASP
问题描述
我试图使用VB脚本在传统的ASP条纹的支付网关整合,我很新的ASP和VB脚本,并试图了解它如何做。
同时我有一个很好的资源:使用集成条纹经典ASP
我只是试图做一样的上述文章中解释说。
我的文件夹结构:
/条
-aspJSON1.17.asp
-index.asp
- 我的index.asp文件 -
<! - #包括虚拟=aspJSON1.17.asp - &GT ;\r
<%\r
功能GetStripe(URL,典型值)\r
\r
组XML =的Server.CreateObject(Microsoft.XMLHTTP)\r
\r
xml.Open典型,网址,假\r
\r
xml.setRequestHeader授权,承载sk_test_mykey\r
\r
的XML.send\r
\r
GetStripe = xml.responseText\r
\r
组XML =无\r
\r
结束功能\r
\r
var_stripe_token =请求(stripeToken)\r
\r
var_json = GetStripe(https://api.stripe.com/v1/customers?description=LoremIpsum&card=&放大器; var_stripe_token,POST)\r
\r
设置oJSON =新aspJSON\r
\r
oJSON.loadJSON(var_json)\r
\r
的Response.Write< pre> JSON返回:&放大器; var_json&安培; < / pre>中\r
的Response.Write< pre>用户名:&放大器; oJSON.data(ID)及< / pre>中\r
%GT;\r
< HTML和GT;\r
< HEAD>\r
<标题>条纹测试与LT; /标题>\r
<脚本的src =// code.jquery.com / jQuery的-1.11.3.min.js>< / SCRIPT>\r
<脚本类型=文/ JavaScript的SRC =https://js.stripe.com/v2/>< / SCRIPT>\r
<脚本类型=文/ JavaScript的>\r
//这个标识您的网站在下面的createToken通话\r
Stripe.setPublishableKey('My_publishkey');\r
// ...\r
< / SCRIPT>\r
<脚本类型=文/ JavaScript的>\r
jQuery的(函数($){\r
$('#付款形式)。递交(函数(事件){\r
变量$形式= $(本);\r
\r
//禁用提交按钮prevent重复点击\r
。$ form.find('按钮')丙(禁用,真正的);\r
\r
Stripe.card.createToken($形式,stripeResponseHandler);\r
\r
// prevent从默认的动作提交表单\r
返回false;\r
});\r
});\r
\r
功能stripeResponseHandler(状态,响应){\r
变量$ =形式$('#支付形式');\r
$(#stripeToken)VAL(response.id)。\r
。$ form.find('按钮')丙(禁用,假);\r
$ form.get(0).submit();\r
\r
\r
}\r
< / SCRIPT>\r
< /头>\r
<身体GT;\r
< H3>条纹测试与LT; / H3 GT&;\r
<形式的行动=方法=POSTID =支付形式>\r
<跨度类=支付-错误>< / SPAN>\r
\r
< DIV CLASS =表格行>\r
<标签>\r
<跨度>卡号和LT; / SPAN>\r
<输入类型=文字大小=20数据条带化=号/>\r
< /标签>\r
< / DIV>\r
\r
< DIV CLASS =表格行>\r
<标签>\r
<跨度> CVC< / SPAN>\r
<输入类型=文字大小=4数据条带化=CVC/>\r
< /标签>\r
< / DIV>\r
\r
< DIV CLASS =表格行>\r
<标签>\r
<跨度>过期(MM / YYYY)LT; / SPAN>\r
<输入类型=文字大小=2数据条带化=EXP-月/>\r
< /标签>\r
<跨度> /< / SPAN>\r
<输入类型=文字大小=4数据条带化=EXP-年/>\r
< / DIV>\r
<输入类型=隐藏的名字=stripeTokenID =stripeTokenVALUE =/>\r
<按钮式=提交>提交付款< /按钮>\r
< /表及GT;\r
< /身体GT;\r
< / HTML>
\r
- 我的aspJSON1.17.asp -
<%\r
Februari 2014年 - 版本1.17格里特面包车库伊佩尔斯\r
类aspJSON\r
公开资料\r
私人p_JSONstring\r
私人aj_in_string,aj_in_escape,aj_i_tmp,aj_char_tmp,aj_s_tmp,aj_line_tmp,aj_line,aj_lines,aj_currentlevel,aj_currentkey,aj_currentvalue,aj_newlabel,aj_XmlHttp,aj_RegExp,aj_colonfound\r
\r
私人小组Class_Initialize()\r
一组数据收集=()\r
\r
设置aj_RegExp =新的正则表达式\r
aj_RegExp.Pattern =\\ S {0,}(\\ S {1} [\\ S \\ S] * \\ S {1})\\ S {0,}\r
aj_RegExp.Global =假\r
aj_RegExp.IgnoreCase = TRUE\r
aj_RegExp.Multiline = TRUE\r
结束小组\r
\r
私人小组Class_Terminate()\r
设置数据=无\r
设置aj_RegExp =什么\r
结束小组\r
\r
公用Sub loadJSON(的InputSource)\r
的InputSource = aj_MultilineTrim(的InputSource)\r
如果len(的InputSource)= 0,则Err.Raise 1,loadJSON错误,没有数据加载。\r
\r
选择的情况下左(InputSource的,1)\r
\t\t\t案件 {, [\r
其他情况下,\r
设置aj_XmlHttp =的Server.CreateObject(Msxml2.ServerXMLHTTP)\r
aj_XmlHttp.openGET,InputSource的,假\r
aj_XmlHttp.setRequestHeader内容类型,文/ JSON\r
aj_XmlHttp.setRequestHeader字符集,UTF-8\r
aj_XmlHttp.Send\r
的InputSource = aj_XmlHttp.responseText\r
设置aj_XmlHttp =什么\r
最终选择\r
\r
p_JSONstring = CleanUpJSONstring(的InputSource)\r
aj_lines =斯普利特(p_JSONstring,CHR(13)及CHR(10))\r
\r
昏暗的水平(99)\r
aj_currentlevel = 1\r
设定值(aj_currentlevel)=数据\r
对于每个aj_line在aj_lines\r
aj_currentkey =\r
aj_currentvalue =\r
如果INSTR(aj_line:)> 0,则\r
aj_in_string =假\r
aj_in_escape =假\r
aj_colonfound =假\r
对于aj_i_tmp = 1为len(aj_line)\r
如果aj_in_escape然后\r
aj_in_escape =假\r
其他\r
选择案例MID(aj_line,aj_i_tmp,1)\r
\t\t\t\t\t\t\t案件 \r
aj_in_string =不aj_in_string\r
\t\t\t\t\t\t\t案件 :\r
如果没有aj_in_escape并没有则aj_in_string\r
aj_currentkey =左(aj_line,aj_i_tmp - 1)\r
aj_currentvalue = MID(aj_line,aj_i_tmp + 1)\r
aj_colonfound = TRUE\r
对于出口\r
\t\t\t\t\t\t\t\t万一\r
\t\t\t\t\t\t\t案件 \\\r
aj_in_escape = TRUE\r
结束选择\r
\t\t\t\t\t万一\r
\t\t\t\t下一个\r
如果aj_colonfound然后\r
aj_currentkey = aj_Strip(aj_JSONDe code(aj_currentkey),)\r
如果不水平(aj_currentlevel).exists(aj_currentkey)然后水平(aj_currentlevel)。新增aj_currentkey,\r
\t\t\t\t万一\r
\t\t\t万一\r
如果权(aj_line,1)={或右(aj_line,1)=[然后\r
如果len(aj_currentkey)= 0,那么aj_currentkey =水平(aj_currentlevel).Count之间\r
设定值(aj_currentlevel).Item(aj_currentkey)=集合()\r
设定值(aj_currentlevel + 1)=级(aj_currentlevel).Item(aj_currentkey)\r
aj_currentlevel = aj_currentlevel + 1\r
aj_currentkey =\r
elseif的权利(aj_line,1)=}或右(aj_line,1)=]或右(aj_line,2)=},或右(aj_line,2)=],然后\r
aj_currentlevel = aj_currentlevel - 1\r
elseif的莱恩(修剪(aj_line))> 0,则\r
如果len(aj_currentvalue)= 0,那么aj_currentvalue = aj_line\r
aj_currentvalue = getJSONValue(aj_currentvalue)\r
\r
如果len(aj_currentkey)= 0,那么aj_currentkey =水平(aj_currentlevel).Count之间\r
水平(aj_currentlevel).Item(aj_currentkey)= aj_currentvalue\r
\t\t\t万一\r
\t\t下一个\r
结束小组\r
\r
公共功能集()\r
集收藏=的Server.CreateObject(的Scripting.Dictionary)\r
结束功能\r
\r
公共职能AddToCollection(dictobj)\r
如果类型名(dictobj)LT;> 说文解字然后Err.Raise 1,AddToCollection错误,不是一个集合。\r
aj_newlabel = dictobj.Count\r
dictobj.Add aj_newlabel,收藏()\r
设置AddToCollection = dictobj.item(aj_newlabel)\r
最终功能\r
\r
专用功能CleanUpJSONstring(aj_originalstring)\r
aj_originalstring =替换(aj_originalstring,CHR(13)及CHR(10),)\r
aj_originalstring = MID(aj_originalstring,2,LEN(aj_originalstring) - 2)\r
aj_in_string =假:aj_in_escape =假:aj_s_tmp =\r
对于aj_i_tmp = 1为len(aj_originalstring)\r
aj_char_tmp = MID(aj_originalstring,aj_i_tmp,1)\r
如果aj_in_escape然后\r
aj_in_escape =假\r
aj_s_tmp = aj_s_tmp&安培; aj_char_tmp\r
其他\r
选择案例aj_char_tmp\r
案\\:aj_s_tmp = aj_s_tmp&安培; aj_char_tmp:aj_in_escape = TRUE\r
案:aj_s_tmp = aj_s_tmp&安培; aj_char_tmp:aj_in_string =不aj_in_string\r
\t\t\t\t\t案件 {, [\r
aj_s_tmp = aj_s_tmp&安培; aj_char_tmp&安培; aj_InlineIf(aj_in_string,,CHR(13)及CHR(10))\r
\t\t\t\t\t案件 }, ]\r
aj_s_tmp = aj_s_tmp&安培; aj_InlineIf(aj_in_string,,CHR(13)及CHR(10))及aj_char_tmp\r
案,:aj_s_tmp = aj_s_tmp&安培; aj_char_tmp&安培; aj_InlineIf(aj_in_string,,CHR(13)及CHR(10))\r
案例否则:aj_s_tmp = aj_s_tmp&安培; aj_char_tmp\r
结束选择\r
\t\t\t万一\r
\t\t下一个\r
\r
CleanUpJSONstring =\r
aj_s_tmp =拆分(aj_s_tmp,CHR(13)及CHR(10))\r
对于每个aj_line_tmp在aj_s_tmp\r
aj_line_tmp =替换(替换(aj_line_tmp,CHR(10),),CHR(13),)\r
CleanUpJSONstring = CleanUpJSONstring&安培; aj_Trim(aj_line_tmp)及字符(13)及字符(10)\r
\t\t下一个\r
结束功能\r
\r
专用功能getJSONValue(BYVAL VAL)\r
VAL =修剪(VAL)\r
如果左(VAL,1)=:那VAL = MID(VAL,2)\r
如果右(VAL,1)=,然后VAL =左(VAL,莱恩(VAL) - 1)\r
VAL =修剪(VAL)\r
\r
选择案例VAL\r
案例真:getJSONValue = TRUE\r
案例假:getJSONValue =假\r
案例空:getJSONValue = NULL\r
否则案例\r
如果(INSTR(VAL,)= 0)。然后\r
如果则IsNumeric(VAL)然后\r
getJSONValue = CDbl(VAL)\r
其他\r
getJSONValue = VAL\r
\t\t\t\t\t万一\r
其他\r
如果左(VAL,1)=那VAL = MID(VAL,2)\r
如果右(VAL,1)=那VAL =左(VAL,莱恩(VAL) - 1)\r
getJSONValue = aj_JSONDe code(修剪(VAL))\r
\t\t\t\t万一\r
结束选择\r
结束功能\r
\r
私人JSONoutput_level\r
公共职能JSONoutput()\r
昏暗的wrap_dicttype,aj_label\r
JSONoutput_level = 1\r
wrap_dicttype =[]\r
对于每个aj_label在数据\r
如果未aj_IsInt(aj_label)然后wrap_dicttype ={}\r
\t\t下一个\r
JSONoutput =左(wrap_dicttype,1)及字符(13)及字符(10)及GetDict(数据)及右(wrap_dicttype,1)\r
结束功能\r
\r
专用功能GetDict(objDict)\r
昏暗的aj_item,aj_keyvals,aj_label,aj_dicttype\r
对于每个aj_item在objDict\r
选择案例类型名(objDict.Item(aj_item))\r
案字典\r
GetDict = GetDict&安培;空间(JSONoutput_level * 4)\r
\r
aj_dicttype =[]\r
对于每个aj_label在objDict.Item(aj_item)。键\r
如果未aj_IsInt(aj_label)然后aj_dicttype ={}\r
\t\t\t\t\t下一个\r
如果aj_IsInt(aj_item)然后\r
GetDict = GetDict&安培; (左(aj_dicttype,1)及CHR(13)及CHR(10))\r
其他\r
GetDict = GetDict&安培; (与& aj_JSONEn code(aj_item)及与&:&放大器;左(aj_dicttype,1)及CHR(13)及CHR(10))\r
\t\t\t\t\t万一\r
JSONoutput_level = JSONoutput_level + 1\r
\r
aj_keyvals = objDict.Keys\r
GetDict = GetDict&安培; (GetSubDict(objDict.Item(aj_item))及空间(JSONoutput_level * 4)及右(aj_dicttype,1)及aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),,,)及字符(13)及字符(10))\r
否则案例\r
aj_keyvals = objDict.Keys\r
GetDict = GetDict&安培; (空间(JSONoutput_level * 4)及aj_InlineIf(aj_IsInt(aj_item),,&放大器; aj_JSONEn code(aj_item)及,)及WriteValue(objDict.Item(aj_item ))及aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),,,)及CHR(13)及CHR(10))\r
结束选择\r
\t\t下一个\r
结束功能\r
\r
专用功能aj_IsInt(VAL)\r
aj_IsInt =(类型名(VAL)=整数或者类型名(VAL)=长)\r
结束功能\r
\r
专用功能GetSubDict(objSubDict)\r
GetSubDict = GetDict(objSubDict)\r
JSONoutput_level = -1 JSONoutput_level\r
结束功能\r
\r
专用功能WriteValue(BYVAL VAL)\r
选择案例类型名(VAL)\r
案例双,整型,长:WriteValue = VAL\r
案空:WriteValue =空\r
案布尔:WriteValue = aj_InlineIf(VAL,真,假)\r
案否则:WriteValue =与& aj_JSONEn code(VAL)及\r
结束选择\r
结束功能\r
\r
专用功能aj_JSONEn code(BYVAL VAL)\r
VAL =替换(VAL,\\,\\\\)\r
VAL =替换(VAL,,\\)\r
VAL =替换(VAL,/,\\ /)\r
VAL =替换(VAL,CHR(8),\\ B)\r
VAL =替换(VAL,CHR(12),\\ F)\r
VAL =替换(VAL,CHR(10),\\ n)\r
VAL =替换(VAL,CHR(13),\\ r)\r
VAL =替换(VAL,CHR(9),\\ t的)\r
aj_JSONEn code =修剪(VAL)\r
结束功能\r
\r
专用功能aj_JSONDe code(BYVAL VAL)\r
VAL =替换(VAL,\\,)\r
VAL =替换(VAL,\\\\,\\)\r
VAL =替换(VAL,\\ /,/)\r
VAL =替换(VAL,\\ B,CHR(8))\r
VAL =替换(VAL,\\ F,CHR(12))\r
VAL =替换(VAL\\ n,CHR(10))\r
VAL =替换(VAL,\\ r,即CHR(13))\r
VAL =替换(VAL,\\ t的,CHR(9)条)\r
aj_JSONDe code =修剪(VAL)\r
结束功能\r
\r
专用功能aj_InlineIf(条件,returntrue,returnfalse)\r
如果条件那么aj_InlineIf = returntrue否则aj_InlineIf = returnfalse\r
结束功能\r
\r
专用功能aj_Strip(BYVAL VAL,脱衣舞)\r
如果左(VAL,1)=脱衣舞然后VAL = MID(VAL,2)\r
如果右(VAL,1)=脱衣舞然后VAL =左(VAL,莱恩(VAL) - 1)\r
aj_Strip = VAL\r
结束功能\r
\r
专用功能aj_MultilineTrim(的TextData)\r
aj_MultilineTrim = aj_RegExp.Replace(的TextData,$ 1)\r
结束功能\r
\r
私有函数aj_Trim(VAL)\r
aj_Trim =修剪(VAL)\r
做虽然左(aj_Trim,1)= CHR(9):aj_Trim = MID(aj_Trim,2):回路\r
虽然做右(aj_Trim,1)= CHR(9):aj_Trim =左(aj_Trim,莱恩(aj_Trim) - 1):回路\r
aj_Trim =修剪(aj_Trim)\r
最终功能\r
末级\r
%GT;
\r
问题是,当我运行code它提供了以下错误:
Microsoft VBScript运行时错误800a01fa
类没有定义:aspJSON
/stripe/index.asp,行24
块引用>请让我知道自己做错了什么是我doing.thanks
解决方案你会恨我的。 :)
包含文件需要在HTML注释标记,其中有两个连字符前/尖括号之后,而不是一个连字符像你。
<! - #包括虚拟=/路径/要/ aspJSON1.17.asp - >
<! - #包括文件=aspJSON1.17.asp - >
i am trying to integrate stripe payment gateway in classic ASP using vb script , i am very new to ASP and vb script and trying to learn how it could be done.
meanwhile i have got a great resource : Integrate stripe using Classic ASP
i am just trying to do the same as explained in the above article.
My Folder Structure :
/stripe
-aspJSON1.17.asp
-index.asp
--My index.asp file--
<!–#include virtual="aspJSON1.17.asp" –> <% Function GetStripe(url,typ) Set xml = Server.CreateObject("Microsoft.XMLHTTP") xml.Open typ, url, False xml.setRequestHeader "Authorization", "Bearer sk_test_mykey" xml.Send GetStripe = xml.responseText Set xml = Nothing End Function var_stripe_token = Request(stripeToken) var_json = GetStripe("https://api.stripe.com/v1/customers?description=LoremIpsum&card=" & var_stripe_token, "POST") Set oJSON = New aspJSON oJSON.loadJSON(var_json) Response.Write "<pre>JSON returned: " & var_json & "</pre>" Response.Write "<pre>UserId: " & oJSON.data("id") & "</pre>" %> <html> <head> <title>Stripe Testing</title> <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> <script type="text/javascript" src="https://js.stripe.com/v2/"></script> <script type="text/javascript"> // This identifies your website in the createToken call below Stripe.setPublishableKey('My_publishkey'); // ... </script> <script type="text/javascript"> jQuery(function($) { $('#payment-form').submit(function(event) { var $form = $(this); // Disable the submit button to prevent repeated clicks $form.find('button').prop('disabled', true); Stripe.card.createToken($form, stripeResponseHandler); // Prevent the form from submitting with the default action return false; }); }); function stripeResponseHandler(status, response) { var $form = $('#payment-form'); $("#stripeToken").val(response.id); $form.find('button').prop('disabled', false); $form.get(0).submit(); } </script> </head> <body> <h3>Stripe Testing</h3> <form action="" method="POST" id="payment-form"> <span class="payment-errors"></span> <div class="form-row"> <label> <span>Card Number</span> <input type="text" size="20" data-stripe="number"/> </label> </div> <div class="form-row"> <label> <span>CVC</span> <input type="text" size="4" data-stripe="cvc"/> </label> </div> <div class="form-row"> <label> <span>Expiration (MM/YYYY)</span> <input type="text" size="2" data-stripe="exp-month"/> </label> <span> / </span> <input type="text" size="4" data-stripe="exp-year"/> </div> <input type="hidden" name="stripeToken" id="stripeToken" value="" /> <button type="submit">Submit Payment</button> </form> </body> </html>
--My aspJSON1.17.asp --
<% 'Februari 2014 - Version 1.17 by Gerrit van Kuipers Class aspJSON Public data Private p_JSONstring private aj_in_string, aj_in_escape, aj_i_tmp, aj_char_tmp, aj_s_tmp, aj_line_tmp, aj_line, aj_lines, aj_currentlevel, aj_currentkey, aj_currentvalue, aj_newlabel, aj_XmlHttp, aj_RegExp, aj_colonfound Private Sub Class_Initialize() Set data = Collection() Set aj_RegExp = new regexp aj_RegExp.Pattern = "\s{0,}(\S{1}[\s,\S]*\S{1})\s{0,}" aj_RegExp.Global = False aj_RegExp.IgnoreCase = True aj_RegExp.Multiline = True End Sub Private Sub Class_Terminate() Set data = Nothing Set aj_RegExp = Nothing End Sub Public Sub loadJSON(inputsource) inputsource = aj_MultilineTrim(inputsource) If Len(inputsource) = 0 Then Err.Raise 1, "loadJSON Error", "No data to load." select case Left(inputsource, 1) case "{", "[" case else Set aj_XmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP") aj_XmlHttp.open "GET", inputsource, False aj_XmlHttp.setRequestHeader "Content-Type", "text/json" aj_XmlHttp.setRequestHeader "CharSet", "UTF-8" aj_XmlHttp.Send inputsource = aj_XmlHttp.responseText set aj_XmlHttp = Nothing end select p_JSONstring = CleanUpJSONstring(inputsource) aj_lines = Split(p_JSONstring, Chr(13) & Chr(10)) Dim level(99) aj_currentlevel = 1 Set level(aj_currentlevel) = data For Each aj_line In aj_lines aj_currentkey = "" aj_currentvalue = "" If Instr(aj_line, ":") > 0 Then aj_in_string = False aj_in_escape = False aj_colonfound = False For aj_i_tmp = 1 To Len(aj_line) If aj_in_escape Then aj_in_escape = False Else Select Case Mid(aj_line, aj_i_tmp, 1) Case """" aj_in_string = Not aj_in_string Case ":" If Not aj_in_escape And Not aj_in_string Then aj_currentkey = Left(aj_line, aj_i_tmp - 1) aj_currentvalue = Mid(aj_line, aj_i_tmp + 1) aj_colonfound = True Exit For End If Case "\" aj_in_escape = True End Select End If Next if aj_colonfound then aj_currentkey = aj_Strip(aj_JSONDecode(aj_currentkey), """") If Not level(aj_currentlevel).exists(aj_currentkey) Then level(aj_currentlevel).Add aj_currentkey, "" end if End If If right(aj_line,1) = "{" Or right(aj_line,1) = "[" Then If Len(aj_currentkey) = 0 Then aj_currentkey = level(aj_currentlevel).Count Set level(aj_currentlevel).Item(aj_currentkey) = Collection() Set level(aj_currentlevel + 1) = level(aj_currentlevel).Item(aj_currentkey) aj_currentlevel = aj_currentlevel + 1 aj_currentkey = "" ElseIf right(aj_line,1) = "}" Or right(aj_line,1) = "]" or right(aj_line,2) = "}," Or right(aj_line,2) = "]," Then aj_currentlevel = aj_currentlevel - 1 ElseIf Len(Trim(aj_line)) > 0 Then if Len(aj_currentvalue) = 0 Then aj_currentvalue = aj_line aj_currentvalue = getJSONValue(aj_currentvalue) If Len(aj_currentkey) = 0 Then aj_currentkey = level(aj_currentlevel).Count level(aj_currentlevel).Item(aj_currentkey) = aj_currentvalue End If Next End Sub Public Function Collection() set Collection = Server.CreateObject("Scripting.Dictionary") End Function Public Function AddToCollection(dictobj) if TypeName(dictobj) <> "Dictionary" then Err.Raise 1, "AddToCollection Error", "Not a collection." aj_newlabel = dictobj.Count dictobj.Add aj_newlabel, Collection() set AddToCollection = dictobj.item(aj_newlabel) end function Private Function CleanUpJSONstring(aj_originalstring) aj_originalstring = Replace(aj_originalstring, Chr(13) & Chr(10), "") aj_originalstring = Mid(aj_originalstring, 2, Len(aj_originalstring) - 2) aj_in_string = False : aj_in_escape = False : aj_s_tmp = "" For aj_i_tmp = 1 To Len(aj_originalstring) aj_char_tmp = Mid(aj_originalstring, aj_i_tmp, 1) If aj_in_escape Then aj_in_escape = False aj_s_tmp = aj_s_tmp & aj_char_tmp Else Select Case aj_char_tmp Case "\" : aj_s_tmp = aj_s_tmp & aj_char_tmp : aj_in_escape = True Case """" : aj_s_tmp = aj_s_tmp & aj_char_tmp : aj_in_string = Not aj_in_string Case "{", "[" aj_s_tmp = aj_s_tmp & aj_char_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10)) Case "}", "]" aj_s_tmp = aj_s_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10)) & aj_char_tmp Case "," : aj_s_tmp = aj_s_tmp & aj_char_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10)) Case Else : aj_s_tmp = aj_s_tmp & aj_char_tmp End Select End If Next CleanUpJSONstring = "" aj_s_tmp = split(aj_s_tmp, Chr(13) & Chr(10)) For Each aj_line_tmp In aj_s_tmp aj_line_tmp = replace(replace(aj_line_tmp, chr(10), ""), chr(13), "") CleanUpJSONstring = CleanUpJSONstring & aj_Trim(aj_line_tmp) & Chr(13) & Chr(10) Next End Function Private Function getJSONValue(ByVal val) val = Trim(val) If Left(val,1) = ":" Then val = Mid(val, 2) If Right(val,1) = "," Then val = Left(val, Len(val) - 1) val = Trim(val) Select Case val Case "true" : getJSONValue = True Case "false" : getJSONValue = False Case "null" : getJSONValue = Null Case Else If (Instr(val, """") = 0) Then If IsNumeric(val) Then getJSONValue = CDbl(val) Else getJSONValue = val End If Else If Left(val,1) = """" Then val = Mid(val, 2) If Right(val,1) = """" Then val = Left(val, Len(val) - 1) getJSONValue = aj_JSONDecode(Trim(val)) End If End Select End Function Private JSONoutput_level Public Function JSONoutput() dim wrap_dicttype, aj_label JSONoutput_level = 1 wrap_dicttype = "[]" For Each aj_label In data If Not aj_IsInt(aj_label) Then wrap_dicttype = "{}" Next JSONoutput = Left(wrap_dicttype, 1) & Chr(13) & Chr(10) & GetDict(data) & Right(wrap_dicttype, 1) End Function Private Function GetDict(objDict) dim aj_item, aj_keyvals, aj_label, aj_dicttype For Each aj_item In objDict Select Case TypeName(objDict.Item(aj_item)) Case "Dictionary" GetDict = GetDict & Space(JSONoutput_level * 4) aj_dicttype = "[]" For Each aj_label In objDict.Item(aj_item).Keys If Not aj_IsInt(aj_label) Then aj_dicttype = "{}" Next If aj_IsInt(aj_item) Then GetDict = GetDict & (Left(aj_dicttype,1) & Chr(13) & Chr(10)) Else GetDict = GetDict & ("""" & aj_JSONEncode(aj_item) & """" & ": " & Left(aj_dicttype,1) & Chr(13) & Chr(10)) End If JSONoutput_level = JSONoutput_level + 1 aj_keyvals = objDict.Keys GetDict = GetDict & (GetSubDict(objDict.Item(aj_item)) & Space(JSONoutput_level * 4) & Right(aj_dicttype,1) & aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),"" , ",") & Chr(13) & Chr(10)) Case Else aj_keyvals = objDict.Keys GetDict = GetDict & (Space(JSONoutput_level * 4) & aj_InlineIf(aj_IsInt(aj_item), "", """" & aj_JSONEncode(aj_item) & """: ") & WriteValue(objDict.Item(aj_item)) & aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),"" , ",") & Chr(13) & Chr(10)) End Select Next End Function Private Function aj_IsInt(val) aj_IsInt = (TypeName(val) = "Integer" Or TypeName(val) = "Long") End Function Private Function GetSubDict(objSubDict) GetSubDict = GetDict(objSubDict) JSONoutput_level= JSONoutput_level -1 End Function Private Function WriteValue(ByVal val) Select Case TypeName(val) Case "Double", "Integer", "Long": WriteValue = val Case "Null" : WriteValue = "null" Case "Boolean" : WriteValue = aj_InlineIf(val, "true", "false") Case Else : WriteValue = """" & aj_JSONEncode(val) & """" End Select End Function Private Function aj_JSONEncode(ByVal val) val = Replace(val, "\", "\\") val = Replace(val, """", "\""") 'val = Replace(val, "/", "\/") val = Replace(val, Chr(8), "\b") val = Replace(val, Chr(12), "\f") val = Replace(val, Chr(10), "\n") val = Replace(val, Chr(13), "\r") val = Replace(val, Chr(9), "\t") aj_JSONEncode = Trim(val) End Function Private Function aj_JSONDecode(ByVal val) val = Replace(val, "\""", """") val = Replace(val, "\\", "\") val = Replace(val, "\/", "/") val = Replace(val, "\b", Chr(8)) val = Replace(val, "\f", Chr(12)) val = Replace(val, "\n", Chr(10)) val = Replace(val, "\r", Chr(13)) val = Replace(val, "\t", Chr(9)) aj_JSONDecode = Trim(val) End Function Private Function aj_InlineIf(condition, returntrue, returnfalse) If condition Then aj_InlineIf = returntrue Else aj_InlineIf = returnfalse End Function Private Function aj_Strip(ByVal val, stripper) If Left(val, 1) = stripper Then val = Mid(val, 2) If Right(val, 1) = stripper Then val = Left(val, Len(val) - 1) aj_Strip = val End Function Private Function aj_MultilineTrim(TextData) aj_MultilineTrim = aj_RegExp.Replace(TextData, "$1") End Function private function aj_Trim(val) aj_Trim = Trim(val) Do While Left(aj_Trim, 1) = Chr(9) : aj_Trim = Mid(aj_Trim, 2) : Loop Do While Right(aj_Trim, 1) = Chr(9) : aj_Trim = Left(aj_Trim, Len(aj_Trim) - 1) : Loop aj_Trim = Trim(aj_Trim) end function End Class %>
the problem is that when i run the code it gives the following error:
Microsoft VBScript runtime error '800a01fa'
Class not defined: 'aspJSON'
/stripe/index.asp, line 24
Please let me know what wrong am i doing.thanks
解决方案You're gonna hate me for this. :)
Include files need to be in html comment tags, which have two hyphens before/after the angle brackets, not one hyphen like you have.
<!-- #include virtual="/path/to/aspJSON1.17.asp" -->
<!-- #include file="aspJSON1.17.asp" -->
这篇关于条纹集成了传统的ASP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!