ajax()在本地主机上似乎不起作用

时间:2018-12-02 15:03:59

标签: php jquery

我从一个朋友那里获得了一些代码,该代码向我展示了刮板如何以其最基本的形式工作。现在,该代码在他的本地环境下运行良好,并且在上载时可以正常运行。但是,将AJAX呼叫转移到我的计算机上似乎无效或无效。我在控制台中没有任何响应或错误,无法尝试将我指向正确的方向。

我尝试过的一些事情

新开发环境-我最初运行XAMPP,并认为此设置可能会引起问题,所以我完全重新安装了Apache,PHP(7.3),MySQL ...

禁用的防火墙

尝试在每个PHP文件的顶部使用<?php header("Access-Control-Allow-Origin: *");启用CORS

使用get()代替ajax()

我想不出其他什么,但我在一夜之间做了很多拖网捕捞,似乎还没有遇到解决方案。我认为这是我的本地设置的问题,因为如果文件被上传,它们将起作用。如果我浏览到localhost/footy-api.php,它会显示JSON(有错误,但这仅是错误的定位)。

有人对此有任何潜在的解决方案吗?

<!DOCTYPE html>
<html>
<head>
  <title>Footy Theft</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="jsearch.css">
  <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
  <script src="https://use.fontawesome.com/8af6c2989d.js"></script>
  <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
  <script type="text/javascript">

    function SHOW(data) {
        var HTML = '<hr/><table class="w3-table-all w3-hoverable"><tr><th>League</th><th>Home Boys</th><th>socre/time</th><th>visitors</th></tr>';
        for(var ff=0; ff<data.length; ff++) {
            //console.log(JSON.stringify(data[ff]));
            var ROW = '<tr><td>'+ data[ff].league +'</td>';
            ROW += '<td>'+ data[ff].team1 +'</td>';
            ROW += '<td>'+ data[ff].info +'</td>';
            ROW += '<td>'+ data[ff].team2 +'</td></tr>';
            HTML += ROW;
        };
        HTML += '</table>';
        $('#RESULTS').html(HTML); 
    };
    function GO() {
      $('#DEBUG').text(" Please wait, searching all the internets... ");
      $.ajax({ url: "footy-api.php" })
      .done(function(data) {
        alert("ok");
        $('#DEBUG').text(""); //JSON.stringify(data));
        SHOW(data); 
      });
    };
    $(document).ready(function () {
        GO();
    });
  </script>
</head>
<body>
  <div class="w3-bar w3-black">
    <span class="w3-bar-item w3-text-pink">Sweaty Sock Fights</span>
    <a href="#" onclick="GO()" class="w3-bar-item w3-button w3-green"><i class="fa fa-search"></i></a>
  </div>
  <div id="DEBUG" class="w3-container w3-large"></div>
  <div id="RESULTS" class="w3-container"></div>
</body>
</html>

<?php
  header('Content-Type: text/json'); 
  require('utils-php.php');
  function BBC(&$BUILD) {
      //$url="URL-TO-GRAB";
      //$ch = curl_init();
      //curl_setopt($ch, CURLOPT_URL, $url);
      //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      //curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
      //$GRAB = curl_exec($ch);
      //curl_close($ch);
      $GRAB = file_get_contents('https://www.bbc.co.uk/sport/football/highland-league/scores-fixtures');
      $HITS = explode( '<article ', $GRAB );
      for( $hh=1; $hh<count($HITS); $hh++ ) {
        $INFO = null;
        $INFO->site = "BBC";
        $INFO->game = $hh."/".(count($HITS)-1);
        $INFO->league = TextBetween($HITS[$hh], '$0', '.');
        $INFO->team1 = TextBetween($HITS[$hh], '<abbr title="', '"');
        $INFO->team2 = TextBetween(TextAfter($HITS[$hh], 'fixture__team--time-away'), '<abbr title="', '"');
        $INFO->info = TextAfter(TextBetween($HITS[$hh], 'fixture__number--time', '</span>'), '>');
        if(strlen($INFO->league)>1) array_push($BUILD, $INFO);
      }
  }
  $ALL = array();
  BBC($ALL);
  $FINAL = str_replace("\/", "/", json_encode($ALL));
  $FINAL = str_replace("\'", "'", $FINAL);
  echo $FINAL;
?>

1 个答案:

答案 0 :(得分:1)

使用上述调试方法后,我发现文件返回200,而且似乎正确找到了。运行.fail()并记录它返回错误Creating default object from empty value in...

与同事交谈后,事实证明,这是初始化新对象的方式。

已更改: $INFO = null;

至: $INFO = new stdClass();

一切正常。