Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery ajax成功时出现未捕获的类型错误_Javascript_Jquery - Fatal编程技术网

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