2015-05-19 2 views
-1

Может ли кто-нибудь сказать, как я могу получить динамические данные или содержимое веб-страницы с помощью javascript?Получить данные динамической веб-страницы, используя JavaScript

Как и php-функция get_file_content() page_value = get_file_content (http://www.mywebsite.com/page.html);

Но он находится в javascript. Возможно ли это?

+0

'.load JQuery (в) и' .ajax() 'функции используются для загрузки данных из веб-сервера. См. Также http://stackoverflow.com/tags/ajax/info. Однако это будет отправлять запросы только серверу происхождения, если только удаленный сервер не имеет CORS. – Paul

ответ

0

Вы должны использовать Ajax

Пример В Javascript

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function loadXMLDoc() 
{ 
var xmlhttp; 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
} 
xmlhttp.open("GET","Your URL",true); 
xmlhttp.send(); 
} 
</script> 
</head> 
<body> 

<h2>AJAX</h2> 
<button type="button" onclick="loadXMLDoc()">Request data</button> 
<div id="myDiv"></div> 

</body> 
</html> 

Вы также можете посмотреть в Jquery AjaxJquery Ajax Doc

примера в Jquery Taken from Here

$.ajax({ 
    url: 'getTwitterFollowers.php', 
    type: 'GET', 
    data: 'twitterUsername=jquery4u', 
    success: function(data) { 
    //called when successful 
    $('#ajaxphp-results').html(data); 
    }, 
    error: function(e) { 
    //called when there is an error 
    //console.log(e.message); 
    } 
}); 
----------------------------------------------------- 
PHP - GET NUMBER FACEBOOK FANS & TWITTER FOLLOWERS 
----------------------------------------------------- 
< ?php 
//get data passed to script 
$username = htmlspecialchars(strip_tags($_GET["twitterUsername"])); 

//get twitter followers 
$api_page = 'http://twitter.com/users/show/' . $username; 
$xml = file_get_contents ($api_page); 
$profile = new SimpleXMLElement ($xml); 
$count = $profile->followers_count; 
$tfans = strval ($count); 

//get facebook likes 
$fuser = json_decode(file_get_contents('http://graph.facebook.com/140918675956744/')); 

//return result 
echo "jQuery4u has " . $fuser->likes . " Facebook fans and " . $tfans . " Twitter followers."; 
?> 

для домена Ajax Cross Вызов вам потребуется JSONP продукта примера jsonp.php

<?php 
    $callback ='mycallback'; 

    if(isset($_GET['mycallback'])) 
    { 
     $callback = $_GET['mycallback']; 
    } 
    $arr =array(); 
    $arr['name']="Ravishanker"; 
    $arr['age']=32; 
    $arr['location']="India"; 

    echo $callback.'(' . json_encode($arr) . ')'; 

?> 

Jquery код для JSONP

$.ajax({ 
     url : "http://hayageektest.appspot.com/cross-domain-cors/jsonp.php", 
     dataType:"jsonp", 
     jsonp:"mycallback", 
     success:function(data) 
     { 
      alert("Name:"+data.name+"nage:"+data.age+"nlocation:"+data.location); 
     } 
    }); 

Пример из here

+0

Я настоятельно рекомендую использовать jQuery ajax, так как у этого есть различные улучшения и исправления надежности перекрестного браузера. – ascx

+0

В этом процессе я могу получить локальную страницу или страницу в том же домене. Но я хочу получить внешнюю динамическую страницу. xmlhttp.open("GET","http://stackoverflow.com/questions/30317015/get-dynamic-webpage-data-using-javascipt",true); Как получить внешние данные динамической страницы? –

+0

Да .. этим способом вы можете обрабатывать локальные страницы, т. Е. Тот же домен .. Для доступа к страницам в другом домене «удаленный сервер должен иметь CORS включен», тогда только ajax получит результаты. Какой бы удаленный сервер вы не пытались получить доступ через ajax .. посмотрите, включен ли CORS или нет – DarkHorse

0

Я думаю, что я получил идеальное решение. Это можно сделать с помощью YQL. Вот код.

<html> 
 
<head> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
 
    
 

 
    <script type="text/javascript"> 
 
    $(document).ready(function(){ 
 
     var container = $('#show'); 
 
     $('.ajaxtrigger').click(function(){ 
 

 
     doAjax($(this).attr('href')); 
 
     return false; 
 
     }); 
 
     function doAjax(url){ 
 
     alert(url); 
 

 
var data = "http://ronwe.com/ronwe-marketing-suite/"; 
 
     if(url.match('^http')){ 
 
      $.getJSON("http://query.yahooapis.com/v1/public/yql?"+ 
 
        "q=select%20*%20from%20html%20where%20url%3D%22"+ 
 
        encodeURIComponent(data)+ 
 
        "%22&format=xml'&callback=?", 
 
      function(data){ 
 
       if(data.results[0]){ 
 
       var data = filterData(data.results[0]); 
 
       container.html(data); 
 

 
       } else { 
 
       var errormsg = '<p>Error: could not load the page.</p>'; 
 
       container.html(errormsg); 
 
       } 
 
      } 
 
     ); 
 
     } else { 
 
      $('#target').load(url); 
 
     } 
 
     } 
 
     function filterData(data){ 
 
     data = data.replace(/<?\/body[^>]*>/g,''); 
 
     data = data.replace(/[\r|\n]+/g,''); 
 
     data = data.replace(/<--[\S\s]*?-->/g,''); 
 
     data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g,''); 
 
     data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g,''); 
 
     data = data.replace(/<script.*\/>/,''); 
 
     return data; 
 
     } 
 
    }); 
 
    </script> 
 

 
    </head> 
 

 
    <body> 
 
    <a href="http://ronwe.com/ronwe-marketing-suite/" class="ajaxtrigger loaded">Load Ajax Content<span> (ready.)</span></a> 
 

 
    <div id="show"> 
 
    </div> 
 
    </body> 
 

 
</html>

Смежные вопросы