【问题标题】:Passing string parameter with alphabetic characters to a javascript function as argument fails将带有字母字符的字符串参数作为参数传递给javascript函数失败
【发布时间】:2011-05-27 01:05:07
【问题描述】:

我尝试使用由所有字母字符组成的参数字符串参数(例如:function1("fsdadfa");)从codebehind(c#.net)调用javascript函数,但未能获得它工作。但是当我用所有数字更改字母字符时(例如:function1(“12234”);)它起作用了。

我的代码如下:

我使用 string.Format 来调用函数。我的代码如下:

     string.Format("javascript:OpenNewsletter1({0},{1})",reader.GetInt("Id").ToString(),"dcsfs")

问题出在第二个参数上。

有人知道为什么会这样吗?如果是这样,请帮助我。

【问题讨论】:

    标签: c# javascript string function parameters


    【解决方案1】:

    您需要对其进行编码并使用引号:

    string.Format("javascript:OpenNewsletter1({0}, '{1}')",
        reader.GetInt("Id").ToString(),
        HttpUtility.HtmlEncode("dcsfs"))
    

    注意第二个参数周围的单引号以及对其进行编码,因为如果该值包含特殊字符,它可能会破坏您的代码。

    【讨论】:

    • 谢谢..它成功了!!!!!!!!!!!!!你能解释一下为什么它适用于“1233”类型参数吗?
    • @Harun,因为1233参数是数字,所以不需要像字符串参数那样用引号括起来。
    • 好的...但是“1233”也是一个字符串,对吗?它也不应该为此工作..
    • @Harun,这将取决于您的 OpenNewsletter1 函数期望的第一个参数。请注意OpenNewsletter1(1233, 'dcsfs')OpenNewsletter1('1233', 'dcsfs') 之间存在差异。在第一种情况下,该函数将数字作为第一个参数,而在第二种情况下,该函数采用字符串。
    • @harun:不,你没有发送引号,只是 1233 - 被解释为整数,而 dcsfs 被解释为变量名。
    【解决方案2】:

    参数按原样插入格式字符串中,所以

    string.Format("javascript:OpenNewsletter1({0},{1})",123,"dcsfs")
    

    产量

    javascript:OpenNewsletter1(123,dcsfs)
    

    其中 javascript 将 dcsfs 解释为变量名。

    试试

    string.Format("javascript:OpenNewsletter1({0},'{1}')",123,"dcsfs")
    

    这将产生

    javascript:OpenNewsletter1(123,'dcsfs')
    

    javascript 将知道如何处理为字符串文字。

    【讨论】:

      【解决方案3】:

      我认为您需要在字符串(参数{1})周围为javascript添加引号:

      string.Format(
         "javascript:OpenNewsletter1({0},\"{1}\")",
         reader.GetInt("Id").ToString(),
         "dcsfs")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-30
        • 1970-01-01
        • 2021-07-24
        • 1970-01-01
        • 2017-09-04
        • 2020-12-19
        • 2017-04-25
        • 2012-07-26
        相关资源
        最近更新 更多