【问题标题】:AJAX javascript not firing asp.net c#AJAX javascript没有触发asp.net c#
【发布时间】:2012-01-02 01:09:18
【问题描述】:

当我向我的 Web 应用程序添加新控件时,javascript 不会触发。我尝试了很多解决方案,但没有一个有效。具体来说,AJAX Control Toolkit 中的手风琴/手风琴窗格不会向上/向下滑动。 Obout 的 FileUploadProgress 控件也使用不会触发的 javascript 函数。如果我打开一个新的 Web 应用程序项目并尝试所有这些,它工作得很好。我的项目很大,所以我不能从头开始。有人可以告诉我我的项目有什么问题吗?我没有错误。 javascript根本不会触发。请帮忙。我正在使用 asp.net c#。

编辑:

这里是文件上传进度控制的代码。我确实有警报语句,但它们不会触发。

    <script type="text/JavaScript">

    function Clear() {
        alert("here1");
        document.getElementById("<%= uploadedFiles.ClientID %>").innerHTML = "";
    }

    function ClearedFiles(fileNames) {
        alert("here2");
        alert("Cleared files with bad extensions:\n\n" + fileNames);
    }

    function Rejected(fileName, size, maxSize) {
        alert("here3");
        alert("File " + fileName + " is rejected \nIts size (" + size + " bytes) exceeds " + maxSize + " bytes");
    }
</script>

<input type="file" name="myFile1" runat="server"/><br/>
<input type="file" name="myFile2"  runat="server"/><br/>
<input type="file" name="myFile3"  runat="server"/><br/>
<input type="submit" value="submit" name="mySubmit" /><br/>
<br/>
<fup:FileUploadProgress ID="FileUploadProgress1" 
   OnClientProgressStopped   = "function(){alert('Files are uploaded to server');}"
   OnClientProgressStarted   = "Clear"
   ShowUploadedFiles         = "true"
   OnClientFileRejected      = "Rejected"
   OnClientFileCleared       = "ClearedFiles"
   runat                     = "server"
>
 <AllowedFileFormats>
      <fup:Format Ext="gif" MaxByteSize="10240"/>
      <fup:Format Ext="jpg" MaxByteSize="10240"/>
      <fup:Format Ext="jpeg" MaxByteSize="10240"/>
      <fup:Format Ext="png" MaxByteSize="10240"/>
 </AllowedFileFormats>
</fup:FileUploadProgress> 
<asp:Label runat="server" id="uploadedFiles" Text="" />

这是它的代码隐藏:

        protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            HttpFileCollection files = Page.Request.Files;

            uploadedFiles.Text = "";

            for (int i = 0; i < files.Count; i++)
            {
                HttpPostedFile file = files[i];
                if (file.FileName.Length > 0)
                {
                    if (uploadedFiles.Text.Length == 0)
                        uploadedFiles.Text += "<b>Successfully uploaded files: </b><table border=0 cellspacing=0>";

                    uploadedFiles.Text += "<tr><td class='option2'>" + file.FileName.Substring(file.FileName.LastIndexOf("\\") + 1) + "</td><td style='font:11px Verdana;'>&nbsp;&nbsp;" + file.ContentLength.ToString() + " bytes</td></tr>";
                }
            }

            if (uploadedFiles.Text.Length == 0)
                uploadedFiles.Text = "no files";
            else
                uploadedFiles.Text += "</table>";
        }

    }

提前致谢!!

【问题讨论】:

  • 放置一些警报消息,查看并在您的问题中放置一些代码。所以我们可以看到你是如何调用 javascript 函数的,并会告诉你哪里错了
  • 您的 javascript 和您需要的 javascript 库是否加载到客户端上?
  • “添加新控件”是什么意思?您添加到项目中的 UserControls?继承自您刚刚添加的 Control 的类?
  • 我在我的问题中添加了示例代码。 @user277498:我不确定是否加载了 javascript 库。由于警报语句不会触发,我假设它们不会加载。
  • @sq33G:我所说的新控件是指来自 ajax 控件工具包的控件或来自 Obout 的 FileUploadProgress 控件。基本上是默认情况下不存在的 asp.net 控件。

标签: c# javascript asp.net ajax controls


【解决方案1】:

看起来这是因为您将任何内容传递给您的 javascript 函数。 :

这就是你所拥有的。 :

OnClientProgressStarted   = "Clear"
ShowUploadedFiles         = "true"
OnClientFileRejected      = "Rejected"
OnClientFileCleared       = "ClearedFiles"

这是我认为你应该拥有的。 :

OnClientProgressStarted   = "Clear();"
ShowUploadedFiles         = "true"
OnClientFileRejected      = "Rejected();"
OnClientFileCleared       = "ClearedFiles();"

另外,其中一些函数需要参数,我没有在上面列出......希望这对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    相关资源
    最近更新 更多