indofraiser
indofraiser

Reputation: 1024

Runtime error Javascript is undefined

As some background I've come via VB6 then VB.Net and am now trying out Bootstrap/MVC with C# so excuse the queries... I've SO searched and been on YouTube as well but a struggling a little. I've my approach is wrong do tell me!

Aim: Stored procedure to run and, in this case, confirm if the username and password are correct. I'll be wanting to add in insert/edit to later Stored Procedures.

Issue: When I run the code on the website I get no error or result. In debug mode I get:

Unhandled exception at line 133, column 5 in http://localhost:49647/Account/Login

0x800a1391 - JavaScript runtime error: '$' is undefined

Thoughts I am not a JS programmer but would assume I'd need to add something to 'Dim' the value in some way? Looking at 0x800a1391 - JavaScript runtime error: 'jQuery' is undefined I might need to call something?

User.cs

using System;
using System.Data.SqlClient;
using System.Data;
using System.Configuration; 

namespace Login.BL
{
    public class User
    {
        public int UserID { get; set; }
        //[Required]
        public int Username { get; set; }
        //[Required]
        public int UserPassword { get; set; }

    }
    public class UserBusinessLogic
    {
        string conStr = ConfigurationManager.ConnectionStrings["myTaylorWoodrowSQL"].ConnectionString;
        public int CheckUserLogin(User User)
        {
            //Check the user is valid!!!!
            using (SqlConnection conObj = new SqlConnection(conStr))
            {
                SqlCommand comObj = new SqlCommand("retrieveUserByNameAndPassword", conObj);
                comObj.CommandType = CommandType.StoredProcedure;
                comObj.Parameters.Add(new SqlParameter("@Username", User.Username));
                comObj.Parameters.Add(new SqlParameter("@Password", User.UserPassword));
                conObj.Open();
                return Convert.ToInt32(comObj.ExecuteScalar());
            }
        }
    }
}

Extract from Login.cshtml I can post full code

<script> 
    $("#Login").click(function ()
    {
        var dataObject = { UserName: $("#UserName").val(), Password: $("#Password").val() };
        $.ajax({
            url:'@Url.Action("Login","User")',
            type:"POST",
            data: dataObject,
            datatype: "json",
            success: function(result)
            {
                if(result.toString()=="Success")
                {
                    alert(result);
                }
                else
                {
                    alert(result);
                }
            },
            error: function (result)
            {
                alert("Error");
            }
        });
    })
</script>

Upvotes: 0

Views: 5793

Answers (2)

Rajshekar Reddy
Rajshekar Reddy

Reputation: 18987

JavaScript runtime error: '$' is undefined

Means jquery is not loaded into your page. So if its a Default MVC application it would be loaded in the _Layout page. But I think you have written the login page without using the default layout, So you can add this line of code to your login page head section (if you are using a layout page then head section of this layout) and everything must be fine.

  @Scripts.Render("~/bundles/jquery")

The default MVC application will have the Jquery and validation related files bundled under this name ~/bundles/jqueryand this is how we use it, Else if its a empty application then you must create a new bundle, Or add only the reference of the jquery file to the page like this.

 <script src="~/Scripts/jquery-1.10.2.min.js"></script>  
//note just drag and drop the file into the page and VS will do the work for you of putting the proper URL there.

Upvotes: 2

neuhaus
neuhaus

Reputation: 4094

You appear not to have loaded the jquery library before running your script.

See https://learn.jquery.com/about-jquery/how-jquery-works/ for details on how to include it.

It's best if you get a local copy of jquery.js and then insert a line such as

<script src="jquery.js"></script>

before the script tag with your own code.

Upvotes: 1

Related Questions