从codeehind传递javascript参数时出错

Passing javascript parameter from codebehind error

本文关键字:出错 参数 javascript codeehind 传递      更新时间:2023-09-26

我使用这个脚本从codeehind调用一个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,那么它正在工作。

删除Script标记,它就会工作,这对我来说很有效:

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

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

您可能只是没有足够地逃离msg。例如,它不能包含单引号'或换行符。

更新

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

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

可能msg参数包含类似' 的符号

然后代码将类似

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

在那里等待右括号。

替换您的消息变量。使用这个---

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