首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp对java脚本的调用移除括号

asp对java脚本的调用移除括号
EN

Stack Overflow用户
提问于 2015-08-31 20:57:36
回答 2查看 49关注 0票数 0

我刚接触过asp和vbscript,并试图将数据库规范列表传递给javascript。条件将在sql语句in子句中使用,如果这是它的名称。问题是这个问题被移除了!

in子句的标准类似于

  • “(‘未界定’)”
  • “(‘条件’)”
  • "('B条件‘)“
  • "('C条件‘,'D条件’)“
  • "('E条件‘,'F条件’,'G条件‘)
  • "('H条件‘,'I条件’,'J条件‘,'K条件’)

javascipt获取行和列的参数,并搜索数据库,并返回依赖于这些条件或条件集的表条目列表。

我一直在做以下工作:

代码语言:javascript
复制
Response.Write "<td WIDTH='6%'  VALIGN='TOP' ALIGN='CENTER' bgcolor = " & ObjDic(elem).clrPreExisting & ">" & vbCRLF
Response.Write "<a href = ""javascript:alert("objDic(elem).critRow")""><font size='2' face='Arial' color='#000000'>" & ObjDic(elem).Get_PreExistingVal(RunningTotal.PreExisting) & "</font></a>" &vbCRLF
Response.Write "</td>" & vbCRLF

即时窗口中的objDic(elem).critRow的值显示

objDic(elem).critRow "('Not Defined')",但thie警报显示未定义。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-01 09:32:34

代码似乎有几个问题。首先,在大多数情况下,您可以通过使用内联字段值和Response.Write标记来避免使用<%= %>。它们是Response.Write的速记形式,将变量、属性或函数的内容写入到发生的地方。在你的例子中,你可以替代:

代码语言:javascript
复制
Response.Write "<td WIDTH='6%'  VALIGN='TOP' ALIGN='CENTER' bgcolor = " & ObjDic(elem).clrPreExisting & ">" & vbCRLF
Response.Write "<a href = ""javascript:alert("objDic(elem).critRow")""><font size='2' face='Arial' color='#000000'>" & ObjDic(elem).Get_PreExistingVal(RunningTotal.PreExisting) & "</font></a>" &vbCRLF
Response.Write "</td>" & vbCRLF

...with...

代码语言:javascript
复制
<td WIDTH='6%'  VALIGN='TOP' ALIGN='CENTER' bgcolor = '<%= ObjDic(elem).clrPreExisting %>'>
    <a href = "javascript:alert('<%= objDic(elem).critRow %>')"><font size='2' face='Arial' color='#000000'>
        <%= ObjDic(elem).Get_PreExistingVal(RunningTotal.PreExisting) %>
    </font></a>
</td>

请,请取出所有的内联格式,并替换为造型类.

代码语言:javascript
复制
<style>
    .cellClass {width: 6%; text-align: center; vertical-align: top;}
    .cellClass a {font-size: 2; font-family: arial; color: black;}
</style>
...
...
<td class="cellClass" bgcolor = "<%= ObjDic(elem).clrPreExisting %>">
    <a href = "javascript:alert('<%= objDic(elem).critRow %>')">
        <%= ObjDic(elem).Get_PreExistingVal(RunningTotal.PreExisting) %>
    </a>
</td>

我还建议坚持一种形式的引号。您可以使用几个不同的属性来标识属性,包括"'""甚至none。当我将值应用于属性时,我总是在经典ASP中使用双语音标记。

JavaScript略有不同,虽然我仍然使用双语音标记来指定属性的赋值,但JavaScript代码中的语音标记通常是撇号('):

代码语言:javascript
复制
<a href="javascript:alert('Use single speech marks in strings.');">Click me</a>

在VBScript字符串中,您应该通过加倍语音标记来转义,所以..。

代码语言:javascript
复制
Response.Write("Paul said: ""Use double speech marks in strings"".")

最后,如果您希望代码按原样工作,那么您的代码就会稍有错误。试一试:

代码语言:javascript
复制
Response.Write "<td WIDTH='6%'  VALIGN='TOP' ALIGN='CENTER' bgcolor = " & ObjDic(elem).clrPreExisting & ">" & vbCRLF
Response.Write "<a href = ""javascript:alert(" & objDic(elem).critRow & ")""><font size='2' face='Arial' color='#000000'>" & ObjDic(elem).Get_PreExistingVal(RunningTotal.PreExisting) & "</font></a>" &vbCRLF
Response.Write "</td>" & vbCRLF

注意中间行中的JavaScript -它缺少属性值前后的级联字符(&)。

票数 1
EN

Stack Overflow用户

发布于 2015-08-31 21:02:14

请小心这一连串的想法。您可能要做的是打开一个名为SQL注入攻击的巨大安全漏洞。通过允许javascript将未经净化的数据传递给查询,用户可以完全访问数据库。

更好的方法是创建一个接收参数的数据访问层。然后,在创建临时查询或将其定向到SQL存储过程之前,它将对参数进行清理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32319859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档