Javascript,ajax从网站提取数据

时间:2016-07-18 19:58:38

标签: javascript ajax cordova

我正在尝试使用PhoneGap进行Web应用程序,因此我使用的是Javascript,HTML5和CSS3等Web语言。我有一个谷歌地图API,所以我想从网站上填充几个坐标点和一些实时信息。

我到目前为止的代码如下:  

    function initialize() {
     var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 12,
     center: new google.maps.LatLng(55.940937, -3.191612),
     // center: {lat: -28, lng: 137}
     mapTypeId: google.maps.MapTypeId.ROADMAP,
    });

     function getResults(){ 
                var headers = document.getElementsByTagName('th');
                var data = document.getElementsByTagName('td');
                var results = [];
                for(var i = 0; i < data.length; i += headers.length) { 
                    var item = {};
                    for(var j = 0; j < headers.length; j++) { 
                        item[ headers[j].textContent.trim() ] = data[i + j].textContent.trim(); 
                    }
                    results.push(item);
                };
                return results;
            }
            console.log(getResults());
            jsonString = JSON.stringify(getResults());
    function callback(results, status) {
            if(status == google.maps.places.PlaceServiceStatus.OK){
             for (var i = 0; i < results.length; i++){

             var place = results[i];
             console.log(place.name);
             console.log(place.value);
             console.log(types[0]);
             createMarker(results[i]);

             }
            }
            }

    setInterval(function($.ajax({ 
       url: "http://edinburgh.cdmf.info/public/carparks/list.htm?callback", 
        data: getResults(),
        type: 'GET',
        dataType: "jsonp",
        //add_header: Acess-Control-Allow-Origin *
        success: function(data){
            //Update the script
             script.setValue(data.value);},
        error: function() {alert('Failed');},
        beforeSend: setHeader           
        });
        ,30000)
       function setHeader(xhr){
         xhr.setRequestHeader('Authorization', results);
          }
        var trafficLayer = new google.maps.TrafficLayer();
    trafficLayer.setMap(map);
  }

和HTML

 </head>
<body onload="initialize()">
    <h1>Welcome to SmartParking</h1>
<div id="map"></div> 

<iframe src="https://www.google.com/maps/d/embed?mid=198X7G-KU3xan5zrG0EtQ63Guojo" width="640" height="480"></iframe>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

所以基本上getResults()方法会转到网站tablesorter并将td信息提取到JSON文件中。

我是网络技术的新手,真的不知道我是否可以这样做,因为我一直有错误的空数组。

我在实际的网站元素Inspector控制台Console answer to getResults()上尝试过GetResuts函数,它的工作原理让我回到了包含所有信息的Object Array

screenshot problem on console Chrome

1 个答案:

答案 0 :(得分:0)

您需要做的是重新构建代码。

首先,您需要在HTML like so.

中创建<form>元素

接下来,您必须设置服务器。无论何时调用API并获取数据,都应该在服务器上处理,而不是像在前端那样在前端处理。基本上,您将表单数据发送到后端,后端发送带有该数据的api调用,并将api数据返回到前端。

最后,如果你想要实时更新,你不想setInterval ajax调用 - 这是一个非常常见的错误,实际上,请阅读它here。该链接还描述了&#34;彗星民意调查&#34; (facebook使用)但你应该考虑使用某种Websockets连接,例如socket.io和Node.js,这很容易设置。

祝你好运!