javascript错误:';NAD197005601';是未定义的
我被一个javascript错误弄得头晕目眩。我正在尝试使用javascript创建一个模式弹出窗口。我使用的javascript代码是:javascript错误:';NAD197005601';是未定义的,javascript,asp.net,Javascript,Asp.net,我被一个javascript错误弄得头晕目眩。我正在尝试使用javascript创建一个模式弹出窗口。我使用的javascript代码是: 函数OpenModalDialogCredit(RRID、SLA_Bucket、AccountNum){ var vReturnValue; var AccountNo=新字符串(); AccountNo=AccountNum.toString(); var url=“RR_Txn_Detail.aspx?RRID=“+RRID+”BucketID=“+SL
函数OpenModalDialogCredit(RRID、SLA_Bucket、AccountNum){
var vReturnValue;
var AccountNo=新字符串();
AccountNo=AccountNum.toString();
var url=“RR_Txn_Detail.aspx?RRID=“+RRID+”BucketID=“+SLA_Bucket”+
“AccNum=”&AccountNum;
如果(url!=null){
vReturnValue=window.showModalDialog(
“风险报告每周详细信息。aspx?RRID=“+RRID+
“&BucketID=”+
SLA_Bucket+”&AccNum=“+AccountNum+”&DtCt=“+2”,
'dialogWidth:800px,dialogHeight:1200px,滚动:1,中心:是;未修饰:是',
‘屏幕X=100’、‘屏幕Y=100’;
}否则{
警报(“没有传递到打开的URL”);
}
}
当AccountNum是一个数字时,上面的代码可以工作,但是当AccountNum有字母和数字时,我会得到一个错误:SCRIPT5009:'NAD197005601'未定义。现在'NAD197005601'是传递到函数中的AccountNum参数,但由于某些原因,它表示其未定义
请帮帮我
感谢您在您发布的评论中看到的
javascript:OpenModalDialogCredit(10, 37, NAD197005601)
大概是一个页面上的URL。这里的问题是,您没有引用要传递的值,这意味着JavaScript将其视为变量而不是字符串值。您需要改为使用(或在ASP.NET中生成):
使用单引号或双引号
如果您使用的是简单的字母数字值,那么您可以在任意一端添加引号字符,但是如果存在其他字符的可能性(特别是如果这是用户提供的输入),则需要正确转义该值。这就是它变得有点复杂的地方:您实际写入页面的是HTML属性中的带引号的字符串,因此您可以选择是使用JavaScript提供的还是HTML提供的特殊字符转义,但是您需要首先对被解释为JavaScript的\
字符串转义(\n
等)的值进行转义。而且您肯定需要转义字符串中的任何“
字符,以避免JavaScript将它们解释为允许脚本注入的字符串结束值标记。因此,从我的头顶上你需要替换
与\
\
与'
\'
如果页面上有jQuery,则可以执行其他操作,例如,可以将这三个值作为HTML中的数据属性发出(在这个元素上,或在适当的父元素上),然后编写脚本绑定单击事件,从正确的元素中查找这些事件,然后进行调用。这将允许您仅将值编写为HTML属性,从而节省一些转义(但不是全部转义!),并且可能允许您使用ASP.NET的标记生成代码来实现这一点。但是如果你还不习惯使用JavaScript,那可能有点雄心勃勃。不要使用
.toString()
你确定你没有在这里混淆Java和JavaScript吗?新字符串()和.toString()
?当您从未使用过AccountNo时,为什么还要创建它?NAD197005601
超出了此函数的范围。错误消息通常指向发生错误的行。您应该找到并添加所有相关代码到问题中。对不起,ToString是个错误,我删除了该代码。NAD197005601是传递到函数中的AccountNum。即使我将鼠标悬停在一行上,它也会显示javascript:OpenModalDialogCredit(10,37,NAD197005601)。当AccountNum不包含字母时,它会工作,但当它确实包含字母时,我会得到错误。好的-您是否尝试将其作为字符串传递而不引用它?i、 e.OpenModeldialogCredit(10,37,NAD197005601)
?您可能希望在账号周围加上单引号或双引号。
javascript:OpenModalDialogCredit(10, 37, 'NAD197005601')