从代码后面传递javascript参数错误

时间:2012-03-22 10:32:22

标签: javascript asp.net

我使用此脚本从codebehind调用javascript。

ClientScript.RegisterStartupScript(this.GetType(), "Exist", "<script language='javascript'>ConfirmRedirect('" + url + "','" + msg + "');</script>", true);

我的javascript代码是

function ConfirmRedirect(url,msg)
    {    

        alert(msg);
        window.location.href = url;
    }

得到')'预期错误。 这里缺少什么?如果我在没有参数的情况下调用javascript,那么它正在运行。

4 个答案:

答案 0 :(得分:1)

查看HTML源代码并将其包含在您的问题/帖子中。

你可能还没有逃过msg。例如,它可以不包含单引号'或换行符。

<强>更新

一个简单的解决方案是使用Replace()转义所有单引号。

ClientScript.RegisterStartupScript(this.GetType(), "Exist", "<script language='javascript'>ConfirmRedirect('" + url + "','" + msg.Replace("'", "\'") + "');</script>", true);

答案 1 :(得分:1)

删除Script标签,它会起作用,这对我有用:

 ClientScript.RegisterStartupScript(this.GetType(), "Exist", "ConfirmRedirect('" + url + "','" + msg + "');", true);

答案 2 :(得分:0)

msg参数可能包含'

等符号

然后代码就像

<script language='javascript'>
    ConfirmRedirect('/myurl/somthing.aspx','Here's my message');
</script>

等待近似括号。

答案 3 :(得分:0)

替换你的msg变量。使用这个---

ClientScript.RegisterStartupScript(this.GetType(), "Exist", "javascript:ConfirmRedirect('" + url + "','" + msg.Replace("'","") + "');", true);