Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Pobieranie danych w js z zewnętrzego serwera
Forum PHP.pl > Forum > Przedszkole
fiasko
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2.  
  3. $.ajax({
  4. type: 'POST',
  5. url: 'http://www.xxxx.pl/gadzet/content.php',
  6. data: ({
  7. action : 'new_product',
  8. }),
  9. dataType: "html",
  10. success: function(data){
  11.  
  12. alert("odpowiedz"+data);
  13.  
  14. //$('#content').append(msg);
  15.  
  16. },error: function(xhr,err){
  17. alert('Brak odpowiedzi serwera');
  18. alert('readyState: '+xhr.readyState+' ');
  19. alert('responseText: '+xhr.responseText);
  20. }
  21.  
  22. });
  23.  
  24.  
  25.  
  26.  
  27. });
[JAVASCRIPT] pobierz, plaintext



Jak to uruchamiam na serwerze z którego szczytuje dane to śmiga . Czyli alert poprawnie się wyświetla wraz z danymi.

Jak uruchamiam to lokalnie na komputerze to funkcja success się wykonuje - ale wyświetla mi alert z pustymi danymi . Czyli mam

Odpowiedz i pusto - brak danych .


A musi mi skrypt zasysać dane z zewnętrznego serwera . Gdziekolwiek to uruchomię.

How to ?
bastard13
Tu masz odpowiedź:
http://forum.php.pl/index.php?showtopic=118581
fiasko
No to jak nie ajax to jak ładować dane na komputerze lokalnym ?

Generalnie robię gadzeta sobie pod windows 7 i w tym celu mi to potrzebne. Powiedzmy, że chcę pobierać pogodę z zewnętrznego serwisu.

Muszę jakoś załadować content do zmiennej z zewnętrznego serwera.

dziamber
Kolega wyżej chyba nie jest na bieżąco, proszę: http://net.tutsplus.com/tutorials/javascri...yql-and-jquery/

U mnie śmiga na localhoscie
fiasko
nie za bardzo rozumiem jak działa ta metoda .

[JAVASCRIPT] pobierz, plaintext
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2.  
  3. <html>
  4.  
  5. <head>
  6.  
  7. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  8.  
  9. <meta http-equiv='cache-control' content='no-cache'>
  10.  
  11. <link rel="stylesheet" href="style.css" type="text/css">
  12.  
  13. </head>
  14.  
  15. <body>
  16.  
  17. <div id="loading"><img src="images/loading.gif" width="20" height="20" border="0"></div>
  18.  
  19. <div id="content"> </div>
  20.  
  21. <script type="text/javascript" src="script/jquery-1.4.4.min.js"></script>
  22.  
  23. <script type="text/javascript" >
  24.  
  25. // Accepts a url and a callback function to run.
  26. function requestCrossDomain( site, callback ) {
  27.  
  28. // If no url was passed, exit.
  29. if ( !site ) {
  30. alert('No site was passed.');
  31. return false;
  32. }
  33.  
  34. // Take the provided url, and add it to a YQL query. Make sure you encode it!
  35. var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&callback=?';
  36.  
  37. // Request that YSQL string, and run a callback function.
  38. // Pass a defined function to prevent cache-busting.
  39. $.getJSON( yql, cbFunc );
  40.  
  41. function cbFunc(data) {
  42. // If we have something to work with...
  43. if ( data.results[0] ) {
  44. // Strip out all script tags, for security reasons.
  45. // BE VERY CAREFUL. This helps, but we should do more.
  46. data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
  47.  
  48. // If the user passed a callback, and it
  49. // is a function, call it, and send through the data var.
  50. if ( typeof callback === 'function') {
  51. callback(data);
  52. }
  53. }
  54. // Else, Maybe we requested a site that doesn't exist, and nothing returned.
  55. else throw new Error('Nothing returned from getJSON.');
  56. }
  57. }
  58.  
  59. requestCrossDomain('http://xxx.pl/gadzet/content.php', function(results) {
  60. $('#kontener').html(results);
  61. });
  62.  
  63.  
  64. </script>
  65.  
  66.  
  67. <div id="kontener"></div>
  68.  
  69. </body>
  70.  
  71. </html>
[JAVASCRIPT] pobierz, plaintext



Jaką rolę odgrywa url http://query.yahooapis.com/v1/public/yql?q w tym skrypcie ? W ogóle nie za bardzo czaję o co tu biega. Wiem tylko, że działa gdy jest link do innej strony.

Jak w stronie dam tylko np. echo "test"

To i tak mam pusto.
Ociu
@fiasko: proponuję zacząć używać odpowiedniego bbCode, w innym wypadku temat zostanie zamknięty.
fiasko
Ponawiam Pytanie bo powyższe rozwiązania albo nie działają przez zewnętrzne API
zegarek84
@bastard13 - podał Ci wyjaśnienie... adres http://query.yahooapis.com/v1/public/yql?q pełni w tym skrypcie rolę jakby serwera proxy - jednak ponieważ jest to inna domena niż Twoja domena zastosowana jest metoda JSONP, gdzie w sumie zamiast formatu json mógłbyś mieć i string xml'a... działa to na tej zasadzie, że do drzewa DOM jest dołączony węzeł script z url'em do podanej strony, po załadowaniu skryptu wywoływana jest funkcja (zdefiniowany callback) która jako argument ma string najczęściej w formacie json...

równie dobrze samemu mogłeś sobie napisać w php skrypt pośredniczący, który by pobierał daną stronę i wypluwał jej zawartość - w ten sposób mógłbyś odpytywać swój skrypcik przez AJAX...
fiasko
Ma ktoś przykładowy kod po stronie php ?

Chciałbym w pełni zrozumieć zasadę działania .
mat-bi
zainteresuj się cURL'em
fiasko
znam Curl i wiem jak działa .

Ale nadal nie wiem jaka jest zasada działania przez Ajax.




bastard13
Tworzysz sobie skrypt php w style:
  1. <?php
  2. if (isset($_GET['url']))
  3. {
  4. //walidacja url
  5. //pobieranie danych z przesłanego url
  6. //zwracanie odpowiedzi
  7. }
  8. ?>

Ajax natomiast wysyła request do twojego skryptu, gdzie parametr url, to adres strony, z której chcesz pobrać dane.
fiasko
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd >
  2.  
  3.  
  4.  
  5. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  6.  
  7. <meta http-equiv='cache-control' content='no-cache'>
  8.  
  9. <link rel="stylesheet" href="style.css" type="text/css">
  10. <script type="text/javascript" src="script/jquery-1.4.4.min.js"></script>
  11.  
  12.  
  13. <script type="text/javascript">
  14.  
  15.  
  16. $(function() {
  17.  
  18. $.getJSON('http://www.xxx.pl/gadzet/nowy.php?callback=?',
  19. function(dane){
  20.  
  21. $('#kontener').append(dane.prod_name);
  22. });
  23.  
  24. });
  25.  
  26.  
  27. </head>
  28.  
  29.  
  30.  
  31. <div id="kontener"></div>
  32.  
  33. </html>



  1.  
  2. <?php if (isset($_GET['callback'])): ?>
  3.  
  4. var response = {
  5.  
  6. prod_name: 'Komputer xxxx',
  7.  
  8. };
  9.  
  10.  
  11.  
  12. <?= $_GET['callback']; ?>(response);
  13.  
  14. <? endif; ?>
  15.  


Zrobiłem smile.gif i zaczaiłem tą metodę powyżej smile.gif

No i miodzio. Zrobiłem sobie własnego gadżet pod windows 7 .

może administracja forum zrobiłaby gadżet , który powiadomi o nowych wypowiedziach na forum ? smile.gif



To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.