Javascript 响应始终是整个ajax数据包

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()},

作为这个函数(responseJSON.success/responseText.success)的返回,我总是得到整个ajax数据包,而不是简单的响应(true/false)。否则,浏览器会向我发送包含所述内容的错误或故障结果

函数是唯一的(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
功能中完成所有操作。