Search code examples
javascriptjqueryjslint

JSLint Warning about Ajax data


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.


Solution

  • 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