Link to home
Start Free TrialLog in
Avatar of verdante
verdante

asked on

How to avoid javascript error 'args is not defined' in ajax autosave implementation?

I have attempted to implement autosave on a .net application using an ajax update panel. I am having difficulty with preventing / capturing errors. My initial attempt to capture errors involved that addition of  including  Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
I then coded the error capture withing the endRequest function. That resulted in a Sys is not defined error. I found this posting: http://encosia.com/updated-your-webconfig-but-sys-is-still-undefined/ which led me to my latest implementation which has the sys handling in a separate script file. Now I receive the error 'args is not defined'. I'm not sure how to reference the args  to enable the ajax call. So you can see I am now out of my depth. I have included the code from my .aspx file and js file below. Your help greatly appreciated
Verdy SysInstance.js
.aspx page
SCRIPT REFERENCE:
	<asp:ScriptManager ID="SMan" runat="server" >
	<Scripts>
		<asp:ScriptReference Path="js/SysInstance.js" />
	</Scripts>
</asp:ScriptManager>

UPDATEPANEL CONTROL:
	    <asp:UpdatePanel ID="Deneme" runat="server" UpdateMode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="TimerAutoSave" EventName="Tick" />
        </Triggers>
        <ContentTemplate>
            <asp:HiddenField ID="hdnUserID" runat="server" Value="" />
            <asp:HiddenField ID="hdnLanguageCode" runat="server" Value="" />
            <asp:HiddenField ID="hdnTempDocID" runat="server" Value="" />
            <asp:HiddenField ID="hdnServerName" runat="server" Value="" />
            <asp:HiddenField ID="hdnServerPort" runat="server" Value="" />
            <asp:HiddenField ID="hdnVirtualDirectoryName" runat="server" Value="" />
            <asp:HiddenField ID="hdnPostASPX" runat="server" Value="" />
        </ContentTemplate>
    </asp:UpdatePanel>
    <asp:Timer ID="TimerAutoSave" runat="server" Interval="5000" OnTick="TimerAutoSave_Tick">
    </asp:Timer>

Open in new window

Avatar of Ravi Vaddadi
Ravi Vaddadi
Flag of United States of America image

check if this solves your problem

Sys.Application.add_init(AppInit);

function AppInit() {
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequest);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
}

function beginRequest(sender,args) {
    if (args.get_error() != undefined) {
        //$get('Error').style.visibility = "visible"; // Let the framework know that the error is handled, // so it doesn't throw the JavaScript alert.
        $get('Error').style.visibility = "hidden"; // Let the framework know that the error is handled, // so it doesn't throw the JavaScript alert.
        args.set_errorHandled(true);
    }
    prm._scrollPosition = null;
}

function endRequest(sender, args) { // Check to see if there's an error on this request.
    if (args.get_error() != undefined)
    //if ($get('Error').style.visibility == "visible")
    //    CloseError();
    {
        $get('Error').style.visibility = "hidden"; // Let the framework know that the error is handled, // so it doesn't throw the JavaScript alert.
        args.set_errorHandled(true);
    }
}
Avatar of verdante
verdante

ASKER

Thanks SriVaddadi. I get a new error now:

args.get_error is not a function

cheers

Verdy
BeginRequestEventArgs does not have have get_error method. you have remove the code referring get_error in beginRequest

Thanks. Sorry this is my code when I remove the comments. I thought the get_error() method was a property of the args parameter. Can you please advise how I can modify this code to make sure the get_error method is included:

function beginRequest(sender, args) {
    if (args.get_error() != undefined) {
        $get('Error').style.visibility = "hidden";
        args.set_errorHandled(true);
    }
    prm._scrollPosition = null;
}


ASKER CERTIFIED SOLUTION
Avatar of Ravi Vaddadi
Ravi Vaddadi
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thx for that. AS you can see I am out of my depth but you have taught me well. I removed the error handling from the beginrequest and it works nicely.
I'll also check out the link so I have a better understanding

thx again
Verdy