Javascript函数检查vb变量
Javascript Function checking vb variable
我正在使用下面的函数,但它确实工作,谁能指出什么是错误的。
vb变量是由数据库查询生成的。
window.onload function PostCodeChecker() {
if (<%= sPostalCode %> !== 'SW') {
alert("This is not an SW Postal Code");
}
}
这里真正发生的是您的服务器端代码正在交换您放置<%= sPostalCode %>
的值,并将结果发送给浏览器。如果sPostalCode
是(比如说)"NW10",你会得到
window.onload function PostCodeChecker() {
if (NW10 !== 'SW') {
// ^--- ERROR (unless you happen to have a client-side variable by that name, which I'm guessing you don't)
alert("This is not an SW Postal Code");
}
}
所以你需要在它周围引号(你需要添加缺失的=
),像这样:
// v-- was missing
window.onload = function PostCodeChecker() {
if ('<%= sPostalCode %>' !== 'SW') {
// ^--- here ^--- and here
alert("This is not an SW Postal Code");
}
}
…所以浏览器会看到:
window.onload = function PostCodeChecker() {
if ('NW10' !== 'SW') {
alert("This is not an SW Postal Code");
}
}
假设字符串中没有任何'
字符,或者其他字符会导致(当服务器端处理完成并将结果发送到浏览器时)无效的JavaScript字符串字面值。
当然,你可以这样做:
<% If sPostalCode <> "SW" Then %>
window.onload = function() {
alert("This is not an SW Postal Code");
}
<% End If %>
…因为它是一个服务器端变量,所以您可以在服务器端进行测试。
旁注:这种表达式形式:
something = function name() { ... };
…在各种浏览器上都有问题,最明显的是IE。它被称为命名函数表达式,因为它是一个函数表达式,其中函数有一个名称(在本例中为name
)。在IE中,这会导致创建两个完全独立的函数,这可能非常令人困惑。忍不住再次:
第一个错误是:
window.onload function PostCodeChecker() {
你错过了赋值运算符,并给它一个名字(在IE irc中内存泄漏):
window.onload = function () {
第二个错误是:
if (<%= sPostalCode %> !== 'SW') {
可能会输出类似
的内容if (SW !== 'SW') {
且SW
为未定义值。你可能想把ASP包在引号里,并确保你输出的是JS和HTML安全的。
主要的错误是你在客户端做测试,当你可以很容易地在服务器上做测试。
pseudo -code因为我不做ASP:
<% if (sPostalCode == "SW") {
print 'alert("This is not an SW Postal Code");';
}
%>
(但将其完全从JS中取出,只是将其作为页面中的文本是通常的,也是最可靠的方法)。
如果没有引号,它将查找与sPostalCode的值同名的变量
试题:
window.onload = function PostCodeChecker() {
if ('<%= sPostalCode %>' !== 'SW') {
alert("This is not an SW Postal Code");
}
}
有两个问题
-
你忘记了
=
所以你的语法是无效的 -
你应该考虑在ASP完成它的工作后,生成的 Javascript是什么样子的。
sPostalCode
被替换,所以如果它的值是"SW
"那么你的条件结束如下:if (SW !== 'SW')
window.onload = function PostCodeChecker() { // <---- equals
if ('<%= sPostalCode %>' !== 'SW') { // <---- quotes in the JS
alert("This is not an SW Postal Code");
}
}
^我还添加了缩进,使您的代码更清晰。我强烈建议你这样做。
你还应该考虑当sPostalCode
包含任何会破坏Javascript语法的字符时会发生什么;例如:a '
。你应该相应地在ASP中准备或"转义"变量
- 将函数的上下文应用于javascript变量
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 将PHP变量传递给jQuery时遇到问题
- 如何通过ajax刷新JSF填充的javascript变量
- 参数变量出现ngTable指令问题
- 通过javascript重定向html传递php变量
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 全局变量和全局对象的属性之间有什么区别吗
- 试图在vb.net codebehind中获取javascript变量
- 如何将文本框中的值存储到 asp.net vb.net 应用程序中的 JavaScript 变量中
- 将变量从 VB 函数传递到客户端 JavaScript
- 如何将vb.net变量加载到javascript中
- 使用VB访问Javascript中隐藏变量的值
- Javascript函数检查vb变量
- 将javascript变量传递给VB.Net
- 为什么变量不能从aspx.vb传递到aspx
- 将文本框值从一个页面转移到vb变量中的弹出页面
- VB中会话变量的Javascript等价物
- 从vb.net发送一个变量到javascript