Maison > Questions et réponses > le corps du texte
asp.net 中我想让网页弹出一个 alert 框,显示我之前代码中的变量值。一开始我这么写:
Response.Write("<script> alert(<%=targetAnswer[seed]%>)</script>");
页面上什么都不显示,也不弹窗。
后来上网查了些资料,写法如下:
Response.Write("<script> alert('"+targetAnswer[seed]+"')</script>");
请问为什么可以这么写呢?
我的理解是targetAnswer[seed]是我之前逻辑代码中的一个数组的值,所以我一开始想使用<%= %>来解决这个问题,可是失败了,但在第二种写法中,他是如何识别到targetAnswer[seed]是一个数组中的元素而不是一个字符串就叫做是"+targetAnswer[seed]+"呢?
三叔2016-11-12 13:29:22
楼上哥们说的Response.Write()的内容是三部分相加是对的。我要回答的是你的另一个问题,为什么 <%= %> 这一个做法在Response.Write()的时候无效。
首先我们先看看Response.Write()是什么?
Response简单来说就是服务器返回给浏览器的数据,
而Response.Write(string input)就是直接把input这个数据写到网页上面去了。
Response.Write("Hello world!")的话,你在页面上直接就能看到Hello world!。
同理,如果写入的是JS,用标签包起来,这就直接执行JS了。
有了这个前提的话,就可以来看你的问题了。
ASP.NET 使用<%= %> 这个的时候,一般是用于前后台共享变量的。这个没问题吧?
一般来说就是我在后台声明了一个变量,前台直接用这个直接能访问。我们又知道,服务器把前台和后台“组合”好了之后输出到浏览器。
这样的话,数据到了浏览器的时候,还能保持<%= %>这个标识用来访问后台(服务器数据)变量吗?
抱歉,不能。因为输入到浏览器的时候,<%= %> 这里面的数据已经被替换掉了...
这样一来,你用Response.Write()输入<%= %>,数据是永远取不到的了。
三叔2016-11-12 13:28:56
Response.Write("");
是三部分的相加啊
""
当然可以了
你上面的写法相当于有个html里
有这么一句话
alert(<%=targetAnswer[seed]%>)能成功吗? 没有这个变量吧 在js执行的环境中
<%=targetAnswer[seed]%>也不是合法js变量名字