2013-07-12 18 views
6

Ho una pagina test.php che mostra tre ha 3 pulsanti "Aggiungi collegamento", facendo clic sui pulsanti l'utente vede una finestra popup. Nella finestra aggiunge il link. Una volta aggiunto il collegamento, la pagina di base cambierà da "Aggiungi collegamento" al collegamento ipertestuale con il nuovo collegamento. Ora, devo passare il nuovo collegamento che ricevo dall'utente da test.php a link.php usando una chiamata ajax. Links.php deve avere un codice JSON per scrivere il collegamento a un altro file chiamato first.json. first.jason avrà una coppia di valori chiave per variabile e collegamento. Dovrei recuperare il valore dal file .json in seguito e ricostruirlo in un array, aggiornare la variabile corrispondente e salvarlo nuovamente.Scrive i dati in un file json dal file PHP

Sono riuscito a ottenere il nuovo collegamento da test.php e in grado di inviare lo stesso tramite una chiamata ajax a link.php. Sono anche in grado di visualizzare il link che ricevo e ho verificato lo stesso. Ora, vorrei copiare il link nel file .json come una coppia chiave. Sono nuovo di JSON e non riesco a capire come farlo. La mia variabile $ p, in link.php ha il link.

Qualsiasi suggerimento sullo stesso sarà utile. Grazie.

Qui di seguito è il mio codice in test.php:

  <!DOCTYPE html> 
     <html> 
     <body> 
     <div id="demos1"> 
    <button id="demo1" onclick="Link1()">Add Link-1</button> 
      <br> 
    </div> 
    <div id="demos2"> 
    <button id="demo2" onclick="Link2()">Add Link-2</button> 
      <br> 
    </div> 
    <div id="demos3"> 
    <button id="demo3" onclick="Link3()">Add Link-3</button> 
      <br> 
      </div> 
    <div id="txtHint"></div> 
    <script> 
      function Link1() 
      { 
      var demo1 = document.getElementById('demo1'); 
      var demos1 = document.getElementById('demos1'); 
      var value1 = prompt("Please Enter the Link"); 
      var link1 = document.createElement('a'); 
      link1.setAttribute('href', value1); 
      link1.innerHTML = "New Link1";        
      demo1.parentNode.removeChild(demo1); 
      demos1.appendChild(link1); 
      sendlink(value1); 
      } 
     function Link2() 
      { 
      var demo2 = document.getElementById('demo2'); 
      var demos2 = document.getElementById('demos2'); 
      var value2 = prompt("Please Enter the Link"); 
      var link2 = document.createElement('a'); 
      link2.setAttribute('href', value2); 
      link2.innerHTML = "New Link2"; 
      demo2.parentNode.removeChild(demo2); 
      demos2.appendChild(link2); 
      sendlink(value2); 
      } 
     function Link3() 
      { 
      var demo3 = document.getElementById('demo3'); 
      var demos3 = document.getElementById('demos3'); 
      var value3 = prompt("Please Enter the Link"); 
      var link3 = document.createElement('a'); 
      link3.setAttribute('href', value3); 
      link3.innerHTML = "New Link3"; 
      demo3.parentNode.removeChild(demo3); 
      demos3.appendChild(link3); 
      sendlink(value3); 
      } 
     function sendlink(str) 
     { 
      if (str.length==0) 
       { 
       document.getElementById("txtHint").innerHTML="hello"; 
       return; 
       } 
      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("txtHint").innerHTML=xmlhttp.responseText; 
       } 
       } 
      xmlhttp.open("GET","links.php?q="+str,true); 
      xmlhttp.send(); 
     } 
    </script> 
     </body> 

      </html> 

Di seguito è il codice per links.php che riceve il valore (ad esempio, link) il test.php invia tramite ajax chiamata:

<?php 
include 'test.php'; 
$p=$_REQUEST['q']; 
?> 

Sono in grado di scrivere su file json utilizzando json_encode. Ora dovrei leggere il link dal file .json, associarlo alla variabile corrispondente e salvarlo. Come andrei su questo?

+1

Mostrare il codice. – msanford

+0

stai cercando di eseguire i/o file PHP? sembra che tu abbia completato con successo tutti i tuoi javascript e ajax. Questo link dovrebbe farti andare in quella direzione: http://www.tutorialspoint.com/php/php_files.htm – MaxPRafferty

risposta

1

Se hai creato il tuo JSON già, allora si può semplicemente fare questo:

fwrite("yourjson.json",json_encode($yourvariablewithdata)) 

Se non è stato creato il file JSON, allora si potrebbe creare con la funzione fopen. Vedi dettagli http://www.php.net/manual/es/function.fopen.php

+0

Sono in grado di scrivere su file json usando json_encode. Ora dovrei leggere il link dal file .json, associarlo alla variabile corrispondente e salvarlo. Come andrei su questo? – user2521326

25

Per scrivere il JSON:

file_put_contents('filename.json', json_encode($p)); 

Per leggere il JSON:

$p = json_decode(file_get_contents('filename.json')); 

Ovviamente questo non fa il controllo degli errori a tutti però.

0

Si può sempre JSON.stringify il JSON sul lato client con jQuery, in questo modo:

var dataForJson = JSON.stringify(your_aray); 

Poi sul lato server lo scrivo come è (senza bisogno di json_encode):

$jsondata = $_POST['dataForJson']; 
$writeJson = file_put_contents('data_en.json', $jsondata); 
2

se si desidera inserire i dati nel file jSON sotto uno è utile

function exportToJson() { 

    mysql_connect("localhost", "root", ""); 
    mysql_select_db("krasimir_benchmark");  

    $res = mysql_query("SELECT * FROM users ORDER BY id"); 
    $records = array(); 
    while($obj = mysql_fetch_object($res)) { 
     $records []= $obj; 
    } 
    file_put_contents("data.json", json_encode($records)); 

} 
Problemi correlati