Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.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 使用AJAX从数据库(mysql)更新数据检索_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 使用AJAX从数据库(mysql)更新数据检索

Javascript 使用AJAX从数据库(mysql)更新数据检索,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我想使用“日期选择器”从数据库获取数据,以选择数据的日期范围,问题是我的数据没有保存在var datapoints上,但是console.log(result)非常好地显示了数据,我的代码如下: test.js jQuery.extend({ dataRange: function(start, end) { $.ajax({ type: "POST", url: "some.php",

我想使用“日期选择器”从数据库获取数据,以选择数据的日期范围,问题是我的数据没有保存在
var datapoints
上,但是
console.log(result)
非常好地显示了数据,我的代码如下:

test.js

jQuery.extend({
dataRange: function(start, end) {
        $.ajax({    
            type: "POST",
            url: "some.php",             
            dataType: "json",  
            data: {date1: start, date2: end},
            success: function(data){                    
                var result = JSON.stringify(data);
                console.log(result); //shows the data well
                return result;
            }
        });

    }
});
//initial data
var start = moment().format('YYYY-MM-DD'); 
var end = moment().subtract(7, 'days').format('YYYY-MM-DD');
var datapointsP;
$.dataRange(start, end)
  .done(function(data) { //get error here
datapointsP = JSON.parse(data);
console.log(datapointsP); // this should print the necessary data
})
.fail(function(xhr) {
 console.log('error', xhr);
});
然后在some.php上

$start = $_POST['date1'];
$end = $_POST['date2'];
$query =  "select * from table where date between '" . $end . "' and '" . $start . "'";
$stmt = $pdo->prepare($query);
$stmt->execute();
$data = array();
for ($i = 0; $i < 24; $i++){
    $data[] = 0;
}

while($row = $stmt->fetch()){
     $data[$row['horas']] = ((int)$row['pot']);
}
$post_data = json_encode($data);
echo $post_data;
}
$start=$\u POST['date1'];
$end=$_POST['date2'];
$query=“从日期介于“”之间的表中选择*”$结束。“‘和’”$开始"'";
$stmt=$pdo->prepare($query);
$stmt->execute();
$data=array();
对于($i=0;$i<24;$i++){
$data[]=0;
}
而($row=$stmt->fetch()){
$data[$row['horas']]=((int)$row['pot']);
}
$post_data=json_encode($data);
echo$post_数据;
}
PD:由于这个问题,我仍然无法添加日期选择器。
提前感谢

您从dataRange以wron方式返回结果,您应该在
ajax成功

 jQuery.extend({
 dataRange: function(start, end) {
        $.ajax({    
            type: "POST",
            url: "some.php",             
            dataType: "json",  
            data: {date1: start, date2: end},
            success: function(data){                    
                var result = JSON.stringify(data);
                console.log(result); //shows the data well
                return result; 
            }
        });

    }
});

$.ajax
执行异步
HTTP(ajax)请求
。这意味着
$.ajax
不会在同一个Javascript线程中执行

因此,执行dataRange函数,并将
$.ajax调用
传递给浏览器。然后它转到下一个语句并返回结果。现在,由于未声明结果,它抛出
uncaughtreferenceerror

即使从
success
处理程序返回结果,变量
datapoints
也将
未定义
,因为数据范围的执行已经完成并返回
未定义

要解决这个问题,您需要使用
promise
<代码>$。ajax返回一个承诺,可用于检索从请求返回的数据。查看本文,了解有关promise和$.ajax的更多信息

jQuery.extend({
数据范围:函数(开始、结束){
返回$.ajax({
类型:“POST”,
url:“some.php”,
数据类型:“json”,
数据:{date1:start,date2:end},
成功:函数(数据){
var result=JSON.stringify(数据);
console.log(result);//很好地显示了数据
返回结果;
}
});
}
});
//初始数据
var start=moment().格式('YYYY-MM-DD');
var end=moment().减去(7,'天').格式('YYYY-MM-DD');
var数据点;
$.dataRange(开始、结束)
.完成(功能(数据){
datapoints=JSON.parse(数据);
console.log(datapoints);//这应该打印必要的数据
})
.失败(功能(xhr){
console.log('error',xhr);
});

您希望如何使用超出其范围的变量?您完全正确!,现在,我的
JSON.parse($.dataRange(start,end))
似乎遇到了问题,语法错误:JSON.parse()的位置0处JSON中出现了意外的标记u在test.js:95中,这意味着什么?当数据类型为
json
时,请不要使用
json parse
,因为这是不必要的,因为您已经在Santiago Centeron some.php上获得了json值。我打印了一个json编码($array),如何在test.js上将其检索为数组?Uncaught TypeError:无法读取undefined的属性'done'似乎我做错了什么?是否从dataRange函数返回$.ajax?结果是和json数组,可以在some.phpSo中看到,结果变量是正确的,对吗?你能告诉我当你做console.log($.dataRange(start,end))时会显示什么吗;它返回“undefined”,但返回console.log(result);返回如下字符串[1,2,3,4,5,6,…]