所以我只是使用这个updateData函数从我的php文件中获取值,它在第一个时间间隔后工作,但是我希望在页面加载后得到第一个数据,所以我试过做var
var dataset=[];
updateData();
在间隔开始之前但是数据集仍然没有立即更新我得到空数组[]
function updateData(){
$.ajax({
type: 'POST',
url: 'parser.php',
dataType: 'json',
cache: false,
success: function(result) {
dataset = result;
},
});
}
<?php
$datasetJSON = array();
for($i=0;$i<7;$i++){
$datasetJSON[] = rand(1,1000);
}
echo json_encode($datasetJSON);
?>
答案 0 :(得分:1)
我认为你的问题是理解AJAX没有同步!
这意味着您的代码将继续运行,而不是等待AJAX调用返回。您可以将AJAX调用视为将与主线程单独运行的线程。
var dataset=[];
updateData();
console.log(dataset); // will execute immediately!
function updateData(){
$.ajax({
type: 'POST',
url: 'parser.php',
dataType: 'json',
cache: false,
success: function(result) {
dataset = result;
console.log(dataset); // now it's updated
},
});
}
你可以调用AJAX同步:
var dataset=[];
updateData();
console.log(dataset); // now it's updated
function updateData(){
$.ajax({
type: 'POST',
url: 'parser.php',
dataType: 'json',
cache: false,
async: false, // <-- This will sync the AJAX call (and freeze the browser)
success: function(result) {
dataset = result;
console.log(dataset); // now it's updated
},
});
}
但是,它违背了AJAX的目的。你应该学习如何处理回调函数。
答案 1 :(得分:0)
只检测加载的页面,然后调用这样的函数。这是你想要的吗?
jQuery(window).load(function () {
updateData();
});
希望这会对你有所帮助。
答案 2 :(得分:0)
在文档就绪时间添加ajax调用,如下所示
<script type="text/javascript">
jQuery(document).ready(function(){
tableselect = jQuery(this).val() ;
var data_pro = {
action: 'update_record',
tableselect: tableselect
};
jQuery.ajax({
type: "POST",
dataType : 'html',
url: ajaxurl,
data: data_pro,
success: function(data){
}
});
});
</script>