2013-02-03 5 views
0

Je souhaite lire le contenu d'une URL en javascript. L'URL n'est pas sur mon domaine, j'ai donc besoin d'une couche intermédiaire qui peut accéder à un domaine croisé. J'ai essayé d'utiliser une fonction PHP pour lire l'URL et retourner le résultat en javascript en utilisant jquery mais cela n'a pas fonctionné.Lire le contenu de l'URL en javascript en utilisant php

Voici mon procès:

J'ai créé un fichier php nommé "phpjs_test.php"

<?php 
function get_data(){ 
    $url='http://asmary.dreameg.com/texttable.txt'; 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
    $content = curl_exec($ch); 
    $content = htmlspecialchars($content); 
    curl_close($ch); 
    $content = nl2br($content); 
    return $content; 
} 
?> 

et voici le code javascript:

<script> 
     $(document).ready(function() { 
      //httpQuery("http://asmary.dreameg.com/texttable.txt"); 
      getOutput(); 
     }); 

     function getRequest() { 
      var req = false; 
      try { 
       // most browsers 
       req = new XMLHttpRequest(); 
      } catch (e) { 
       // IE 
       try { 
        req = new ActiveXObject("Msxml2.XMLHTTP"); 
       } catch (e) { 
        // try an older version 
        try { 
         req = new ActiveXObject("Microsoft.XMLHTTP"); 
        } catch (e) { 
         return false; 
        } 
       } 
      } 
      return req; 
     } 

     function getOutput() { 
      var ajax = getRequest(); 
      ajax.onreadystatechange = function() { 
       if (ajax.readyState == 4) { 
        document.getElementById('output').innerHTML = ajax.responseText; 
       } 
      }; 
      ajax.open("GET", "phpjs_test.php", true); 
      ajax.send(null); 
     } 

Je suis complètement nouveau PHP donc je ne sais pas même la fonction PHP est correcte ou non.

+1

"Il ne fonctionne pas" est pas un diagnostic très utile . – GordonM

+1

Vous devez utiliser 'echo', pas' return', pour que AJAX prenne la réponse –

+0

mais il peut l'appeler comme echo get_data(); et ça devrait bien fonctionner. –

Répondre

0

Vous devez simplement utiliser les méthodes jQuery ajax au lieu de créer XMLHTTPRequest. Vous n'avez pas à vous soucier d'ajouter plus de code pour IE et vous chargez déjà la bibliothèque jQuery. Aussi, si vous définissez l'en-tête à Autoriser-Origine-Accès dans votre fichier PHP et spécifiez l'autre domaine que vous demandez alors vous pouvez faire une requête AJAX et obtenir la réponse sinon il ne retournera rien ou dans votre onglet outils de développement montrera un 403 - Interdit.

Access-Control-Allow-Origin syntax

0

Modifiez le fichier PHP:

<?php 
$url='http://asmary.dreameg.com/texttable.txt'; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$content = curl_exec($ch); 
curl_close($ch); 
$content = explode('~',$content); 

foreach($content as $c) 
{ 
    $records[] = explode('|',$c); 
} 
$content = json_encode($records); 
echo $content; 
?> 

Javascript recevra un tableau JSON comme celui-ci

[["1","name1","10","city1"],["2","name2","20","city2"],["3","name3","30","city3"],["4","name4","40","city4"],["5","name5","50","city5"],["6","name6","60","city6"],["7","name7","7","city7"],["8","name8","80","city8"],["9","name9","90","city9"],["10","name10","100","city10"],["11","name11","11","city11"],["12","name12","12","city12"],["13","name13","13","city13"],["14","name14","14","city14"],["15","name15","15","city15"],["16","name16","16","city16"],["17","name17","17","city17"],["18","name18","18","city18"],["19","name19","19","city19"],["20","name20","20","city20"],[""]] 
+0

Je l'ai changé mais l'ajax.responseText est le code php –

+0

Vous devriez encoder également le fichier texttable.txt en ANSI pour éviter les problèmes (enregistrez-le avec un éditeur de texte brut comme le bloc-notes) –

+0

Vous devez enregistrer le fichier PHP avec une extension .php –

Questions connexes