Answered by:
Issue in calling the method

Question
-
User-389597101 posted
Hi All
I have created a file "test.js" in asp.net project with the following code
function Alert() { alert("Alert"); }
There is another file where I am doing lazy loading using register script and require methods.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> <script src="http://ajax.microsoft.com/ajax/beta/0911/Start.js"></script> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager runat="server" EnableCdn="True"></asp:ScriptManager> <a href="#">Click Me</a> </form> <script type="text/javascript"> $(document).ready( function () { $("a").click( function () { try { Sys.loader.defineScript({ name: "MyLibrary", debugUrl: "%/../test.js", releaseUrl: "%/../test.js", dependencies: ["jQuery", "Start"], isLoaded: !!(window.jQuery) }); Sys.require(Sys.scripts.MyLibrary); Alert(); } catch (e) { alert(e); } }); }); </script> </body> </html>
But I am getting the error - "ReferenceError: Alert is not defined". Am I doing anything wrong.
Tuesday, September 4, 2018 6:41 AM
Answers
-
User-893317190 posted
Hi karang,
How do you define your test.js? Is it still function Alert(){ alert("alert")}?
If so, please change your code. I will highlight the code which you need to pay attention.
<form id="form1" runat="server"> <asp:ScriptManager runat="server" EnableCdn="True"></asp:ScriptManager> <a href="#">Click Me</a> <script type="text/javascript"> Sys.loader.defineScript({ name: "MyLibrary", releaseUrl: "/Scripts/test.js", dependencies: ["jQuery"], isLoaded: !!(window.Alert) }); Sys.require(Sys.scripts.MyLibrary); $(document).ready( function () { $("a").click( function () { try { Alert(); } catch (e) { alert(e); } }); }); </script>
Best regards,
Ackerly Xu
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Thursday, September 6, 2018 11:22 AM -
User-893317190 posted
Hi karang,
Please don't use debugurl,please use releaseUrl.
<script> Sys.loader.defineScript({ name: "MyLibrary", releaseUrl: "/test.js", dependencies: ["jQuery"], isLoaded: !!(window.TestMethod) }); Sys.require(Sys.scripts.MyLibrary); $(document).ready( function () { $("a").click( function () { try { TestMethod(); //Sys.require(Sys.scripts.MyLibrary, TestMethod()); } catch (e) { alert(e); } }); }); </script>
Best regards,
Ackerly Xu
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Thursday, September 6, 2018 11:49 AM
All replies
-
User-893317190 posted
Hi karang,
% in "%/../test.js" represents the relative to the path where you download start.js , so the url will be https://ajax.microsoft.com/ajax/beta/test.js.
So please change it to the path relative to your application , for example ,"/Scripts/test.js" represents the test.js file in Scripts folder which is at the root path.
And you should also change the isLoaded property to !!window.Alert to ensure that the text.js is loaded.
Below is my code.
<form id="form1" runat="server"> <asp:ScriptManager runat="server" EnableCdn="True"></asp:ScriptManager> <a href="#">Click Me</a> <script type="text/javascript"> Sys.loader.defineScript({ name: "MyLibrary", releaseUrl: "/Scripts/test.js", dependencies: ["jQuery"], isLoaded: !!(window.Alert) }); Sys.require(Sys.scripts.MyLibrary); $(document).ready( function () { $("a").click( function () { try { Alert(); } catch (e) { alert(e); } }); }); </script>
As you could see , I put the Sys.loader.defineScript and Sys.require(Sys.scripts.MyLibrary) outside $(document).ready , because the script is lazily loaded, when you call the Alert function , your test.js may not be loaded.
Also please remove your Start dependency , it seems there is no script named Start in Sys.scripts.
Best regards,
Ackerly Xu
Wednesday, September 5, 2018 8:23 AM -
User-389597101 posted
Hi Ackerly
Thanks for the response. I have used following code
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> <script src="http://ajax.microsoft.com/ajax/beta/0911/Start.js"></script> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager runat="server" EnableCdn="True"></asp:ScriptManager> <a href="#">Click Me</a> </form> <script type="text/javascript"> try { Sys.loader.defineScript({ name: "MyLibrary", debugUrl: "test.js", dependencies: ["jQuery"], isLoaded: !!(window.alert) }); Sys.require(Sys.scripts.MyLibrary); } catch (e) { alert(e); } $(document).ready( function () { $("a").click( function () { Alert(); }); }); </script> </body> </html>
But no alert is popped up. Could you please check if this is fine.
Thursday, September 6, 2018 5:14 AM -
User-893317190 posted
Hi karang,
It seems your function‘s A is upper case.
function Alert() { alert("Alert"); }
If you haven't modify your test.js , please use
isLoaded: !!(window.Alert)
Best regards,
Ackerly Xu
Thursday, September 6, 2018 8:11 AM -
User-1739700955 posted
I will recommend you to change the name of the function, as "alert" is predefedind function of javascript.
Thursday, September 6, 2018 10:33 AM -
User-389597101 posted
Hi NadeemDev
Thanks for the response. I have changed it and changed some code as well. But still I am getting the reference error.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> <script src="http://ajax.microsoft.com/ajax/beta/0911/Start.js"></script> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager runat="server" EnableCdn="True"></asp:ScriptManager> <a href="#">Click Me</a> </form> <script type="text/javascript"> $(document).ready( function () { $("a").click( function () { try { Sys.loader.defineScript({ name: "MyLibrary", debugUrl: "/test.js", dependencies: ["jQuery"], isLoaded: !!(window.alert) }); Sys.require(Sys.scripts.MyLibrary, TestMethod()); } catch (e) { alert(e); } }); }); </script> </body> </html>
Thursday, September 6, 2018 11:06 AM -
User-893317190 posted
Hi karang,
How do you define your test.js? Is it still function Alert(){ alert("alert")}?
If so, please change your code. I will highlight the code which you need to pay attention.
<form id="form1" runat="server"> <asp:ScriptManager runat="server" EnableCdn="True"></asp:ScriptManager> <a href="#">Click Me</a> <script type="text/javascript"> Sys.loader.defineScript({ name: "MyLibrary", releaseUrl: "/Scripts/test.js", dependencies: ["jQuery"], isLoaded: !!(window.Alert) }); Sys.require(Sys.scripts.MyLibrary); $(document).ready( function () { $("a").click( function () { try { Alert(); } catch (e) { alert(e); } }); }); </script>
Best regards,
Ackerly Xu
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Thursday, September 6, 2018 11:22 AM -
User-389597101 posted
Hi Ackerly
I have modified the method name from Alert to TestMethod. So the code is also changed accordingly. But I am getting this error - "TypeError: Cannot read property 'replace' of undefined". One more thing, the file test.js is placed on the root folder.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> <script src="http://ajax.microsoft.com/ajax/beta/0911/Start.js"></script> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager runat="server" EnableCdn="True"></asp:ScriptManager> <a href="#">Click Me</a> </form> <script type="text/javascript"> try { Sys.loader.defineScript({ name: "MyLibrary", debugUrl: "/test.js", dependencies: ["jQuery"], isLoaded: !!(window.TestMethod) }); Sys.require(Sys.scripts.MyLibrary); } catch (e) { alert(e); } $(document).ready( function () { $("a").click( function () { try { TestMethod(); //Sys.require(Sys.scripts.MyLibrary, TestMethod()); } catch (e) { alert(e); } }); }); </script> </body> </html>
Thursday, September 6, 2018 11:28 AM -
User-893317190 posted
Hi karang,
Please don't use debugurl,please use releaseUrl.
<script> Sys.loader.defineScript({ name: "MyLibrary", releaseUrl: "/test.js", dependencies: ["jQuery"], isLoaded: !!(window.TestMethod) }); Sys.require(Sys.scripts.MyLibrary); $(document).ready( function () { $("a").click( function () { try { TestMethod(); //Sys.require(Sys.scripts.MyLibrary, TestMethod()); } catch (e) { alert(e); } }); }); </script>
Best regards,
Ackerly Xu
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Thursday, September 6, 2018 11:49 AM -
User-389597101 posted
Hi Ackerly Xu
Thanks a lot for all your support. It worked :)
Thursday, September 6, 2018 11:51 AM