none
Response.Write输出js代码用alert弹出窗口,如何使这个alert接受带有引号的变量值 RRS feed

  • 问题

  • string str = "我是\'谁";
    Response.Write("<script>alert('原因:"+ str +"')</script>");

    像这样的代码,弹出窗口就会失灵,原因是str内含有单引号,除了替换掉单引号,就没有别的办法吗?
    2012年11月25日 3:23

答案

  • javascript中很多字符都是有特殊意义的(好比你不能在C#用保留字,或者叫“关键字”进行变量定义等)。

    你如果要输出单引号,必须进行转义,我再举例子:

    【示例——直接输出单引号】

    1)创建一个Html页面,拖拽一个普通按钮到里边。

    2)代码如下:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <script type="text/javascript">
            function MyClick() {
                alert("OK");
                alert('\'我要飞!\'');
            }
        </script>
    </head>
    <body>
        <p>
            <input id="Button1" type="button" value="button" onclick="MyClick()" />
        </p>
    </body>
    </html>

    不过值得注意的是——C#中如果对单引号转移:

    Console.WriteLine("aa\'a");
    

    输出的结果只有aa'a,“\“是被忽略的。

    因此C#必须:

    Console.WriteLine("aa\\'a");
    

    这样输出的结果是aa\'a,那么整个字符串在js的alert中解释为aa'a了。

    2012年11月25日 8:34

全部回复

  •   protected void Button1_Click(object sender, EventArgs e)
        {
            string str ="我是\\'谁";
            Response.Write("<script>alert('原因:" + str + "')</script>");
        }

    使用如上写法

    http://blog.csdn.net/zx13525079024

    2012年11月25日 4:04
  •   protected void Button1_Click(object sender, EventArgs e)
        {
            string str ="我是\\'谁";
            Response.Write("<script>alert('原因:" + str + "')</script>");
        }

    使用如上写法

    http://blog.csdn.net/zx13525079024

    双斜杠的作用是什么
    2012年11月25日 7:06
  • javascript中很多字符都是有特殊意义的(好比你不能在C#用保留字,或者叫“关键字”进行变量定义等)。

    你如果要输出单引号,必须进行转义,我再举例子:

    【示例——直接输出单引号】

    1)创建一个Html页面,拖拽一个普通按钮到里边。

    2)代码如下:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <script type="text/javascript">
            function MyClick() {
                alert("OK");
                alert('\'我要飞!\'');
            }
        </script>
    </head>
    <body>
        <p>
            <input id="Button1" type="button" value="button" onclick="MyClick()" />
        </p>
    </body>
    </html>

    不过值得注意的是——C#中如果对单引号转移:

    Console.WriteLine("aa\'a");
    

    输出的结果只有aa'a,“\“是被忽略的。

    因此C#必须:

    Console.WriteLine("aa\\'a");
    

    这样输出的结果是aa\'a,那么整个字符串在js的alert中解释为aa'a了。

    2012年11月25日 8:34