[CLOSED] "Ext is undefined" - error in simple javascript when calling DirectMethod

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1

    [CLOSED] "Ext is undefined" - error in simple javascript when calling DirectMethod

    So I have my Default.aspx and trying to do some "keepalive" so that the session doesnt time out all the time.

    The page inherits a MasterPage and in the head I place this:
    <%@ Page Language="C#" MasterPageFile="SiteSecure.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplicationExtNetTest.Secure.Default" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <asp:Content ID="asd" ContentPlaceHolderID="head" runat="server">
        <ext:XScript runat="server">
            <script type="text/javascript">
                var timerObj;
    
                function KeepAlive() {
                    #{DirectMethods}.SendKeepAlive();
                    timerObj = setTimeout("KeepAlive()", 1000 * 30);
                }
    
                KeepAlive();
            </script>
        </ext:XScript>
    </asp:Content>
    The code-behind:

    [DirectMethod]
    public void SendKeepAlive()
    {
        DateTime start = DateTime.Now;
        KeepAlivePingWithReply asd = new KeepAlivePingWithReply();
        asd = (KeepAlivePingWithReply)SRef.main.SendRequest(asd);
    
        if (asd != null && asd.Success)
        {
            TimeSpan ts = DateTime.Now.Subtract(start);
            ToolbarTextItem2.Text = asd._ServerTime.ToLongTimeString() + " (" + ts.TotalMilliseconds + " ms)";
        }
        else
        {
            ToolbarTextItem2.Text = "No server reply";
            X.Msg.Alert("Error", "EPIC FAIL");
        }
    }
    Easy enough. Problem is that I get the following error in the browser:

    Uncaught ReferenceError: Ext is not defined

    I have also tried this approach in calling DirectMethod:
               function KeepAlive() {
                    Ext.net.DirectMethods.SendKeepAlive();
                    timerObj = setTimeout("KeepAlive()", 1000 * 30);
                }
    But same error. Its weird, because I call DirectMethods from Javascript in other pages without problems. I cant see the error...
  2. #2
    Hi,

    Do you have ResourceManager on the master page?
  3. #3
    yes, the entire MasterPage is here:



    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="SiteSecure.master.cs" Inherits="WebApplicationExtNetTest.Secure.SiteSecure" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>test</title>
        <asp:ContentPlaceHolder ID="head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" />
    
        <div>
            <asp:ContentPlaceHolder ID="MainContent" runat="server">
            </asp:ContentPlaceHolder>
        </div>
        </form>
    
       
    </body>
    </html>
  4. #4
    Hi,

    Try this in master page head (i think that your script is executed before ExtJS resources loading)
    <head runat="server">
        <title>test</title>
        <ext:ResourcePlaceHolder runat="server" />
        <asp:ContentPlaceHolder ID="head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
  5. #5
    Done, but that didnt help.

    Can you reproduce the error in this test page?


    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplicationExtNetTest.Test.Default" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <ext:XScript ID="XScript1" runat="server">
            <script type="text/javascript">
                var timerObj;
    
                function KeepAlive() {
                    Ext.net.DirectMethods.SendKeepAlive();
                    timerObj = setTimeout("KeepAlive()", 1000 * 30);
                }
    
                KeepAlive();
            </script>
        </ext:XScript>
    </head>
    <body>
        <form id="form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" />
        <div>
        
        </div>
        </form>
    </body>
    </html>

    Code-behind:


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Ext.Net;
    
    namespace WebApplicationExtNetTest.Test
    {
        public partial class Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            [DirectMethod]
            public void SendKeepAlive()
            {
            }
        }
    }
  6. #6
    I have reproduced.

    Well, Ext scripts are not loaded at the moment of KeepAlive() executing.

    Please use Ext.onReady() or DocumentReady listener of ResourceManager.

Similar Threads

  1. [CLOSED] "True is not defined" javascript error
    By coleg123 in forum 1.x Legacy Premium Help
    Replies: 4
    Last Post: Aug 11, 2011, 6:51 PM
  2. Replies: 8
    Last Post: May 30, 2011, 5:55 PM
  3. Replies: 12
    Last Post: Apr 13, 2011, 3:28 PM
  4. Replies: 11
    Last Post: Mar 30, 2011, 2:21 PM
  5. Replies: 0
    Last Post: Mar 29, 2011, 5:32 PM

Tags for this Thread

Posting Permissions