ASP.NET中嵌套使用JS里alert的困惑
高洛峰
高洛峰 2016-11-12 13:28:39
0
3
884

asp.net 中我想让网页弹出一个 alert 框,显示我之前代码中的变量值。一开始我这么写:

Response.Write("<script> alert(<%=targetAnswer[seed]%>)</script>");

页面上什么都不显示,也不弹窗。

后来上网查了些资料,写法如下:

Response.Write("<script> alert('"+targetAnswer[seed]+"')</script>");

请问为什么可以这么写呢?

我的理解是targetAnswer[seed]是我之前逻辑代码中的一个数组的值,所以我一开始想使用<%= %>来解决这个问题,可是失败了,但在第二种写法中,他是如何识别到targetAnswer[seed]是一个数组中的元素而不是一个字符串就叫做是"+targetAnswer[seed]+"呢?


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

Antworte allen(3)
三叔

楼上哥们说的Response.Write()的内容是三部分相加是对的。我要回答的是你的另一个问题,为什么 这一个做法在Response.Write()的时候无效。

首先我们先看看Response.Write()是什么?
Response简单来说就是服务器返回给浏览器的数据,
而Response.Write(string input)就是直接把input这个数据写到网页上面去了。
Response.Write("Hello world!")的话,你在页面上直接就能看到Hello world!。
同理,如果写入的是JS,用标签包起来,这就直接执行JS了。

有了这个前提的话,就可以来看你的问题了。
ASP.NET 使用 这个的时候,一般是用于前后台共享变量的。这个没问题吧?
一般来说就是我在后台声明了一个变量,前台直接用这个直接能访问。我们又知道,服务器把前台和后台“组合”好了之后输出到浏览器。
这样的话,数据到了浏览器的时候,还能保持这个标识用来访问后台(服务器数据)变量吗?
抱歉,不能。因为输入到浏览器的时候, 这里面的数据已经被替换掉了...

这样一来,你用Response.Write()输入,数据是永远取不到的了。


学霸

怎么会在邮件里推荐这个问题?这个问题有什么意义吗?sf没内容可推了吗??

Response.Write($"");

好吧, 你还能这么写


三叔

Response.Write("");

是三部分的相加啊
""
当然可以了

你上面的写法相当于有个html里

有这么一句话

alert()能成功吗? 没有这个变量吧 在js执行的环境中
也不是合法js变量名字


Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage