搜索

首页  >  问答  >  正文

ASP.NET中嵌套使用JS里alert的困惑

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

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

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

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

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

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

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


高洛峰高洛峰2940 天前887

全部回复(3)我来回复

  • 三叔

    三叔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()输入<%= %>,数据是永远取不到的了。


    回复
    0
  • 欧阳克

    欧阳克2016-11-12 13:29:12

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

    Response.Write($"");

    好吧, 你还能这么写


    回复
    0
  • 三叔

    三叔2016-11-12 13:28:56

    Response.Write("");

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

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

    有这么一句话

    alert(<%=targetAnswer[seed]%>)能成功吗? 没有这个变量吧 在js执行的环境中
    <%=targetAnswer[seed]%>也不是合法js变量名字


    回复
    0
  • 取消回复