数据未定义

时间:2018-06-13 08:59:49

标签: javascript jquery ajax

当我点击页面上的提交按钮时,控制台会指出以下错误:

process.js:19 Uncaught ReferenceError: data is not defined
at HTMLButtonElement.<anonymous> (process.js:19)
at HTMLButtonElement.dispatch (jquery-3.3.1.min.js:2)
at HTMLButtonElement.y.handle (jquery-3.3.1.min.js:2)

这是我点击提交按钮时执行的jQuery AJAX代码。这是我第一次玩AJAX / jQuery - 不知道发生了什么,所以如果有人可以帮助我,那将非常感激!

$(document).ready(function() {
$('#login_button').click(function()
{
    event.preventDefault();
    var formData = {
        'email'         : $('input[email=email').val(),
        'password'      : $('input[password=password').val()
    };

    $.ajax({
        type        : 'POST',
        url         : 'ajax/proclogin.php',
        data        : formData,
        dataType    : 'json'
    });

    // using the done promise callback

        if (data.success == false)
        {
            if(data.errors.email)
            {
                //toastr.error(''+data.errors.email+'', 'Oops!');
                alert('Email error');
            }
            else if(data.errors.password)
            {
                //toastr.error(''+data.errors.password+'', 'Oops!');
                alert('Password Error');
            }
        }
        else
        {
            //toastr.success('Works!', 'WooHoo!');
            alert('Works.');
        }
});
});

5 个答案:

答案 0 :(得分:1)

您正在使用的

data对象未定义。正如Rory McCrossan&#39;所建议的那样,使用下面提到的方法ajax。有关详细信息,请转到此链接 - http://api.jquery.com/jquery.ajax/

示例

 $(document).ready(function() {
    $('#login_button').click(function()
    {
        event.preventDefault();
        var formData = {
            'email'         : $('input[email=email]').val(),
            'password'      : $('input[password=password]').val()
        };

        $.ajax({
            type        : 'POST',
            url         : 'ajax/proclogin.php',
            data        : formData,
            dataType    : 'json',
            success     : function(data){
                         if (data.success == false)
                           {
                              if(data.errors.email)
                              {
                               //toastr.error(''+data.errors.email+'', 'Oops!');
                                alert('Email error');
                              }
                    else if(data.errors.password)
                    {
                        //toastr.error(''+data.errors.password+'', 'Oops!');
                        alert('Password Error');
                    }
                }
                else
                {
                    //toastr.success('Works!', 'WooHoo!');
                    alert('Works.');
                }
               });
        }
     });                   
 });

答案 1 :(得分:0)

$.ajax来电成功回调中提供响应数据

 $.ajax({
        type        : 'POST',
        url         : 'ajax/proclogin.php',
        data        : formData,
        dataType    : 'json'
    }).done(resp => {
       // You IF statements go here.
    }).fail(error => {

    });

查看以下文档:jQuery

答案 2 :(得分:0)

模型ajax函数看起来像这样

$.ajax({
    url : 'wopiEditor',
    data : {
        data : data,
        reqType : "initEditFile",
        access_token : "DEADBEEFDEADBEEFDEADBEEF"
    },
    type : 'POST',
    dataType : 'text',
    success : function(response) {

    },
    error : function(request, textStatus, errorThrown) {
        console.log(request, textStatus, errorThrown);
    }
});

在您的代码中,数据在任何地方定义。所以它给出了错误。

答案 3 :(得分:0)

Add success handler like this...

 $.ajax({
        type        : 'POST',
        url         : 'ajax/proclogin.php',
        data        : formData,
        dataType    : 'json',
        success: function (response) {
           console.log(response);
        }
    });

答案 4 :(得分:0)

关于您现在的问题,验证电子邮件和密码

'email'         : $('input[email=email]').val(),
'password'      : $('input[password=password]').val()

这 - &gt; input [email = email]的目标是带有“email”属性的输入元素,该属性不是有效的输入属性,您正在寻找名称/类型等。

'email'         : $('input[name=email]').val(),
'password'      : $('input[name=password]').val()

因此您定位的所有输入元素都具有电子邮件或密码的名称属性。然后确保你的输入元素上有name = email

<input type="email" name="email">
<input type="text" name="password">

希望这个解决方案可以帮助你