【问题标题】:Run javascript from code behind从后面的代码运行 javascript
【发布时间】:2013-01-08 20:27:37
【问题描述】:

我知道有很多这样的问题。我尝试了很多,但仍然无法使其正常工作。

我有:RadAjaxManagerRadAjaxPanelRadScriptBlock

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" 
         DefaultLoadingPanelID="RadAjaxLoadingPanel1">
         <ClientEvents OnRequestStart="onRequestStart" />
             <AjaxSettings>
                  <telerik:AjaxSetting AjaxControlID="AjaxPanel">
                      <UpdatedControls>
                          <telerik:AjaxUpdatedControl ControlID="AjaxPanel"/>
                       </UpdatedControls>
                   </telerik:AjaxSetting>
              </AjaxSettings>
    </telerik:RadAjaxManager>
    <telerik:RadAjaxPanel runat="server" ID="AjaxPanel" Wrap="True" CssClass="PanelAjax">
         <telerik:RadComboBox runat="server" ID="cbLanguage" Width="115px" 
             AutoPostBack="True"Sort="Ascending" EmptyMessage="Choose language" 
             DataValueField="id" DataTextField="languageName"
             OnSelectedIndexChanged="cbLanguage_SelectedIndexChanged">
          </telerik:RadComboBox>
    </telerik:RadAjaxPanel>
    <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
      <script>
          function MyFunction(){
                  alert('asdasd');
          }
      </script>
    </telerik:RadScriptBlock>
</asp:Content>

Master Page 我有:

<telerik:RadScriptManager ID="ScriptManager1" runat="server">
</telerik:RadScriptManager>

我想在 combo box selected index change 上运行 MyFunction()。

我已经试过了:

protected void cbLanguage_SelectedIndexChanged(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(Page.GetType(), "myKey", "MyFunction();");
    ScriptManager.RegisterStartupScript(Page, this.GetType(), "testOne", "MyFunction();", true);
}

我也尝试直接触发警报:

ScriptManager.RegisterStartupScript(Page, GetType(), "alert", "alert('asd');", false);

RadAjaxManager1.ResponseScripts.Add(@"radalert('Welcome to RadWindow <b>Prometheus</b>!', 330, 210);");

string treeScript = "<script language='javascript'>alert('asd');</script>";
                Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", treeScript);

RadAjaxManager1.ResponseScripts.Add(@"alert('Welcome');");

谁能解释一下我做错了什么?

没有错误。 只是不执行javascript代码。我的屏幕上没有alert() 窗口。

【问题讨论】:

  • 为什么在你的函数后面的代码行前面有1:2:
  • 只是列举我已经尝试过的。代码中没有'1:'和'2:'
  • 你应该从你的代码 sn-p 中删除它。这是非常具有误导性的。
  • 顺便说一句,你没有提到,你的脚本实际上是什么不起作用。你在编译时,运行时有错误吗?您收到 JavaScript 错误吗?您的 JavaScript 是否出现在源代码中?等等等等。
  • 没有错误,只是没有出现alert()弹窗

标签: javascript asp.net ajax code-behind


【解决方案1】:

您的 javascript 中应该出现语法错误!您的声明中有错字。

你写道:

  <script>
      fuction MyFunction(){
              alert('asdasd');
      }
  </script>

但它必须是:

  <script>
      function MyFunction(){
              alert('asdasd');
      }
  </script>

【讨论】:

  • 就在这里,我没有复制粘贴并输入错误。代码中一切正常:function MyFunction() { alert("it works!");}
  • 这是某种令人讨厌的 tekerik 魔法。我试过'RadAjaxManager1.ResponseScripts.Add(@"MyFunction();");'以前,但它没有工作。现在它可以工作了。感谢您的帮助)
  • @makambi:也许你在某个地方错过了一个角色,或者我不知道。很高兴它现在有效! :)
猜你喜欢
  • 2012-12-05
  • 2023-03-20
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
  • 2011-12-02
  • 1970-01-01
相关资源
最近更新 更多