这让我感到困惑。我有两个按钮:
set "JAVA_OPTS=%JAVA_OPTS% -Dhttps.proxyHost=<IP> -Dhttps.proxyPort=8080"
调用两个不同的函数:
<div class="btn-group" role="group">
<asp:Button runat="server" ID="RegisterButton" ClientIDMode="Static" OnClick="RegisterButton_Click" Text="register" />
<asp:Button runat="server" ID="TestButton" ClientIDMode="Static" OnClick="TestButton_Click" Text="testClick" />
</div>
当我单击protected void RegisterButton_Click(object sender, EventArgs e)
{
...
Register(user)
}
private void Register (user)
{
...
RegisterResultResultJson(regRes);
}
private void RegisterResultResultJson(RegResult regResult)
{
string jsonString = Helpers.Serializer.JsonSerializer.ToJSON(regResult);
string script = ";RegisterResult(" + jsonString + ");";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "RegisterStartupScript", script, true);
}
protected void TestButton_Click(object sender, EventArgs e)
{
string script = ";console.log('klik');";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "RegisterStartupScript", script, true);
}
时,一切正常,我可以在源日志和控制台日志“ klik”中看到脚本。但是,当我单击TestButton
时,什么都没有发生。当我将断点放入代码中时,复制RegisterButton
并将其粘贴到控制台中,JS script
可以正常工作。
答案 0 :(得分:1)
但是当我单击RegisterButton时没有任何反应
发生的事情是当您执行以下代码时:
string script = ";RegisterResult(" + jsonString + ");";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "RegisterStartupScript", script, true);
这只是将脚本代码粘贴到网页中,而不调用功能
<script type="text/javascript">
//<![CDATA[
;RegisterResult(yourDatacomesHere);//]]>
</script>
因此,如果您要调用该函数,而不是将其粘贴到script标签中,只需将函数调用为:
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "registerButtonClick", "RegisterResult("+jsonString+")", true);
或者您可以将代码绑定到IIFE中。
string script = "(function(){RegisterResult(" + jsonString + ");})()";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "registerButtonClick", script, true);
注意:如果可能的话,以供将来参考,请尝试使用WebMethods,它可以从客户端调用(使用ajax或简单的javascript),如果成功或失败,则可以将值返回给客户端功能。