首次使用AJAX从PHP获取数据

时间:2016-05-30 13:04:39

标签: php jquery json ajax

所以我只是使用这个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);
?>

3 个答案:

答案 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>