当我点击页面上的提交按钮时,控制台会指出以下错误:
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.');
}
});
});
答案 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">
希望这个解决方案可以帮助你