Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript错误:';NAD197005601';是未定义的_Javascript_Asp.net - Fatal编程技术网

javascript错误:';NAD197005601';是未定义的

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

我被一个javascript错误弄得头晕目眩。我正在尝试使用javascript创建一个模式弹出窗口。我使用的javascript代码是:

函数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将它们解释为允许脚本注入的字符串结束值标记。因此,从我的头顶上你需要替换

  • \
    \
  • '
    \'
在将字符串从C#发送到HTML之前,按该顺序执行。唉,我不知道有哪家图书馆会为你做这件事


如果页面上有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')