Javascript 响应始终是整个ajax数据包
作为这个函数(responseJSON.success/responseText.success)的返回,我总是得到整个ajax数据包,而不是简单的响应(true/false)。否则,浏览器会向我发送包含所述内容的错误或故障结果Javascript 响应始终是整个ajax数据包,javascript,jquery,ajax,Javascript,Jquery,Ajax,作为这个函数(responseJSON.success/responseText.success)的返回,我总是得到整个ajax数据包,而不是简单的响应(true/false)。否则,浏览器会向我发送包含所述内容的错误或故障结果 函数是唯一的(inputObject){ let type=$(inputObject).attr('id'); 让res=$.ajax({ url:“/dbajax.php”, 方法:“POST”, 数据:{[type]:$(inputObject.val()},
函数是唯一的(inputObject){
let type=$(inputObject).attr('id');
让res=$.ajax({
url:“/dbajax.php”,
方法:“POST”,
数据:{[type]:$(inputObject.val()},
数据类型:“JSON”,
成功:函数(数据){返回数据},
错误:函数(数据){}
})
console.log(res.responseJSON.success);//->错误:无法读取未定义的
console.log(res.responseJSON);//->未定义
返回res;
}
您的问题与$.ajax是异步的这一事实有关。因此,如果您在$.ajax之后编写某些内容,那么它将在处理请求之前完成。你应该在成功函数中做所有的事情
函数是唯一的(inputObject){
let type=$(inputObject).attr('id');
让res=$.ajax({
url:“/dbajax.php”,
方法:“POST”,
数据:{[type]:$(inputObject.val()},
数据类型:“JSON”,
成功:函数(数据){console.log(数据)},
错误:函数(数据){console.log(数据)}
})
}
您试图在ajax请求完成之前访问responseJSON。您需要等待ajax完成后才能使用它。有两种方法可以做到这一点-
如robinvrd所述,使用成功和错误函数:
function isUnique(inputObject) {
let type = $(inputObject).attr('id');
let res = $.ajax({
url: '/dbajax.php',
method: 'POST',
data: {[type]: $(inputObject).val()},
dataType: 'JSON',
success: function(data) {
console.log(data.success); //this will fire when the ajax request is finished and return the data
},
error: function(data) {
console.error(data); //this will tell you of any errors after the request has been made
}
})
return res;
}
或者使用请求对象上的回调:
function isUnique(inputObject) {
let type = $(inputObject).attr('id');
let res = $.ajax({
url: '/dbajax.php',
method: 'POST',
data: {[type]: $(inputObject).val()},
dataType: 'JSON'
})
res.done(function(result) {
console.log(res.responseJSON.success);
});
res.fail(function( jqXHR, textStatus) {
console.error("Request failed: " + textStatus);
});
return res;
}
您的问题与
$.ajax
是异步的这一事实有关。因此,如果您在$.ajax
之后编写一些内容,那么它将在处理请求之前完成。您应该在success
功能中完成所有操作。