2

The following is a snippet of my JS:

$("#submit-email").click(function () {
    var first_name = $("input[name='first_name']").val();
    var last_name = $("input[name='last_name']").val();
    var telephone_number = $("input[name='telephone_number']").val();
    var email_address = $("input[name='email_address']").val();
    var message = $("textarea[name='message']").val();
    $.ajax({
        url: route_send_email,
        method: "POST",
        data: {
            first_name: first_name,
            last_name: last_name,
            telephone_number: telephone_number,
            email_address: email_address,
            message: message
        },
        success: function () {
            $("input[name='first_name']").val("");
            $("input[name='last_name']").val("");
            $("input[name='telephone_number']").val("");
            $("input[name='email_address']").val("");
            $("input[name='message']").val("");
        }
    });
});

JSLint is giving the warning:

Unexpected ': first_name'.

Unexpected ': last_name'.

. . ... up to message.

What exactly is the error? The code works fine, but want to make JSLint happy.

Community
  • 1
  • 1
StackOverflowNewbie
  • 39,403
  • 111
  • 277
  • 441

3 Answers3

4

The issue with the code is your data property is a JSON Object which the syntax is { "property": value }

JSHint is picking up the fact that you dont have the " surrounding the property names.

your data object should become:

data: {
     "first_name": first_name,
     "last_name": last_name,
     "telephone_number": telephone_number,
     "email_address": email_address,
     "message": message
}

This Question explains in detail a better answer

Qpirate
  • 2,078
  • 1
  • 29
  • 41
0

You need to cover your data keys in "inverted commas" sign, like

$("#submit-email").click(function () {
    var first_name = $("input[name='first_name']").val();
    var last_name = $("input[name='last_name']").val();
    var telephone_number = $("input[name='telephone_number']").val();
    var email_address = $("input[name='email_address']").val();
    var message = $("textarea[name='message']").val();
    $.ajax({
        url: route_send_email,
        method: "POST",
        data: {
            "first_name": first_name,
            "last_name": last_name,
            "telephone_number": telephone_number,
            "email_address": email_address,
            "message": message
        },
        success: function () {
            $("input[name='first_name']").val("");
            $("input[name='last_name']").val("");
            $("input[name='telephone_number']").val("");
            $("input[name='email_address']").val("");
            $("input[name='message']").val("");
        }
    });
});
Shehroz Altaf
  • 618
  • 1
  • 10
  • 17
0

In your data object you must have to write the property name in inverted commas like:-

data: {
"first_name": first_name,
"last_name": last_name
}
Adnan Tariq
  • 167
  • 5