0

代码 :

string url = "http://www.google.com";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "UrlSocialDefinitivo", "var UrlSocialDefinitivo=" + Server.UrlEncode(url) + ";", true);

但我得到(在浏览器控制台上)SyntaxError: identifier starts immediately after numeric literal:。

事实上它注册UrlSocialDefinitivo=http%3a%2f%2fwww.google.it;

我哪里错了?我该如何解决这个麻烦?

4

2 回答 2

3

它错过了字符串周围的引号:

string url = "http://www.google.com";
ScriptManager.RegisterClientScriptBlock(
    this, 
    this.GetType(), 
    "UrlSocialDefinitivo", 
    "var UrlSocialDefinitivo=\"" + Server.UrlEncode(url) + "\";",
    true
    );

这将产生:

UrlSocialDefinitivo="http%3a%2f%2fwww.google.it";

请注意,我不确定您是否必须保持Server.UrlEncore通话。这取决于您实际期望的格式。

于 2012-10-11T13:04:31.027 回答
2

您需要将 url 字符串括在引号中,否则 javascript 解释器将假定它是要执行的 javascript(并且惨遭失败)。

ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
    "UrlSocialDefinitivo", 
    "var UrlSocialDefinitivo='" + Server.UrlEncode(url) + "';", true);
// quotes               here ^                    and here ^
于 2012-10-11T13:09:00.190 回答