Javascript JQuery ajax成功时出现未捕获的类型错误
虽然我的脚本按预期工作,但我在控制台中遇到了这个错误Javascript JQuery ajax成功时出现未捕获的类型错误,javascript,jquery,Javascript,Jquery,虽然我的脚本按预期工作,但我在控制台中遇到了这个错误 Uncaught TypeError: Cannot read property 'taken' of null 我试图弄清楚这条消息的含义,从我所知道的情况来看,这意味着元素“take”在DOM中不存在,但我不确定当它是在ajax调用的if循环中创建的元素时,这有什么关系 ajax调用 setInterval(function() { $.ajax({ type: "POST", url:"incl
Uncaught TypeError: Cannot read property 'taken' of null
我试图弄清楚这条消息的含义,从我所知道的情况来看,这意味着元素“take”在DOM中不存在,但我不确定当它是在ajax调用的if循环中创建的元素时,这有什么关系
ajax调用
setInterval(function() {
$.ajax({
type: "POST",
url:"includes/multi_check.php",
dataType: "json",
success: function(response){
if(response.taken == 'yes'){
var taken_by = response.taken_by;
window.location.href ="http://www.x-rayqa.co.uk/index.php"
}
}
});
}, 5000); //5 seconds
php调用(multi_check.php
)
以下是您需要查看的代码行-
success: function(response){
if(response.taken == 'yes'){
错误消息所说的是“响应”为空。所以,response.take是不可读的
如注释中所述,将行更改为以下内容以修复错误-
if(response && response.taken === 'yes')
以下是您需要查看的代码行-
success: function(response){
if(response.taken == 'yes'){
错误消息所说的是“响应”为空。所以,response.take是不可读的
如注释中所述,将行更改为以下内容以修复错误-
if(response && response.taken === 'yes')
您应该优化、改进返回JSON对象的方式。更好的方法是:
header( "Content-Type: application/json" );
echo json_encode($output_array);
exit;
正如其他人提到的,您应该检查作为响应返回的内容
success: function(response){
console.log(response); // What is the output of this in your JavaScript console?
if(response.taken == 'yes'){
调试的一个好方法是使用Chrome开发者工具中的“网络”选项卡。它将准确地显示PHP文件返回的内容
总的来说,您可能在PHP端遇到了问题,而不是JavaScript端。如果直接调用PHP,它的输出是什么
为了对AJAX请求做出更明确的响应,您可能需要在PHP中添加一些保护措施,如:
if (!$output_array) {
$output_array = array('success' => 0);
} else {
$output_array['success'] = 1;
}
header( "Content-Type: application/json" );
echo json_encode($output_array);
exit;
然后,您可以在JavaScript中检查此变量的输出:
success: function(response){
if (response.success === 1){
// Handle success
} else {
// Handle failure
}
您应该优化、改进返回JSON对象的方式。更好的方法是:
header( "Content-Type: application/json" );
echo json_encode($output_array);
exit;
正如其他人提到的,您应该检查作为响应返回的内容
success: function(response){
console.log(response); // What is the output of this in your JavaScript console?
if(response.taken == 'yes'){
调试的一个好方法是使用Chrome开发者工具中的“网络”选项卡。它将准确地显示PHP文件返回的内容
总的来说,您可能在PHP端遇到了问题,而不是JavaScript端。如果直接调用PHP,它的输出是什么
为了对AJAX请求做出更明确的响应,您可能需要在PHP中添加一些保护措施,如:
if (!$output_array) {
$output_array = array('success' => 0);
} else {
$output_array['success'] = 1;
}
header( "Content-Type: application/json" );
echo json_encode($output_array);
exit;
然后,您可以在JavaScript中检查此变量的输出:
success: function(response){
if (response.success === 1){
// Handle success
} else {
// Handle failure
}
由于
response
为null,因此从null
访问属性会导致此问题
请尝试以下方法:
if (response && response.taken ) {
//...
}
通过这种方式,您将检查对象
响应的真值,然后在其计算结果为true
时访问属性,因为响应
为null,因此从null
访问属性将导致此问题
请尝试以下方法:
if (response && response.taken ) {
//...
}
这样,您将检查对象响应的真值,然后访问一个属性(如果它的计算结果为true
),显示ajax调用的json响应返回了什么?错误意味着“响应”对象不存在。查看一下。$output\u array
的输出是什么?@karthikr没有输出当不满足if条件时,也有JSON输出吗?否则响应可能为空,如错误消息中所述。显示ajax调用的json响应返回什么?错误意味着“response”对象不存在。查看一下。$output\u array
的输出是什么?@karthikr没有输出当不满足if条件时,也有JSON输出吗?否则,响应可能为空,如错误消息中所述。response
仍为null
。这行不通if(response&&response.take===“yes”)
可以工作。@karthikr只有在multi-check.php中的参数为true时才有响应,如果没有响应,这就是导致错误的原因。您关于检查是否有响应的建议修复了问题,因此如果您将其添加为答案,我将接受,谢谢response
仍然是null
。这行不通if(response&&response.take===“yes”)
可以工作。@karthikr只有在multi-check.php中的参数为true时才有响应,如果没有响应,这就是导致错误的原因。您关于检查是否有响应的建议修复了问题,因此,如果您将其添加为答案,我将接受它,感谢此错误是由于缺少响应而导致的,因为php中的参数为false此错误是由于缺少响应而导致的,因为php中的参数为false