2013-07-12 6 views
6

Ich habe eine test.php Seite, die drei angezeigt hat 3 "Add Link" Schaltflächen, beim Klicken auf die Schaltflächen sieht der Benutzer ein Popup-Fenster. Im Fenster fügt er den Link hinzu. Sobald der Link hinzugefügt wurde, ändert sich die Basisseite von "Link hinzufügen" zum Hyperlink mit dem neuen Link. Jetzt muss ich den neuen Link, den ich vom Benutzer erhalte, von test.php an links.php übergeben, indem ich einen Ajax-Aufruf verwende. Links.php muss einen JSON-Code haben, um den Link zu einer anderen Datei namens first.json zu schreiben. first.jason wird ein Schlüsselwertpaar für Variable und Link haben. Ich müsste den Wert später aus der JSON-Datei abrufen und in ein Array rekonstruieren, die entsprechende Variable aktualisieren und sie zurückspeichern.Schreiben Sie Daten in eine JSON-Datei von PHP-Datei

Ich habe bei weitem geschafft, den neuen Link von test.php zu bekommen und in der Lage, das gleiche über Ajax Aufruf an links.php zu senden. Ich bin auch in der Lage, den Link anzuzeigen, den ich erhalte, und habe ihn bestätigt. Jetzt möchte ich den Link in .json-Datei als Schlüsselvale-Paar kopieren. Ich bin neu bei JSON und nicht in der Lage, herauszufinden, wie es geht. Meine Variable $ p, in links.php hat den Link.

Alle Hinweise auf dem gleichen werden hilfreich sein. Vielen Dank.

Unter meinen Code in test.php ist:

  <!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> 

Unten ist der Code für links.php, die den Wert erhält (dh Link) sendet der test.php durch Anruf Ajax:

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

Ich kann mit json_encode in JSON-Datei schreiben. Jetzt müsste ich den Link aus der .json Datei lesen, ihn der entsprechenden Variablen zuordnen und speichern. Wie würde ich darüber gehen?

+1

Code anzeigen. – msanford

+0

suchen Sie PHP-Datei-I/O zu tun? Es klingt, als ob Sie alle Ihre Javascript und Ajax erfolgreich abgeschlossen haben. Dieser Link sollte dich in diese Richtung bringen: http://www.tutorialspoint.com/php/php_files.htm – MaxPRafferty

Antwort

1

Wenn Sie Ihren json bereits erstellt haben, dann können Sie einfach tun:

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

Wenn Sie Ihre JSON-Datei erstellt haben, dann Sie es mit fopen Funktion erstellen können. Details sehen http://www.php.net/manual/es/function.fopen.php

+0

Ich kann mit json_encode in die json-Datei schreiben. Jetzt müsste ich den Link aus der .json Datei lesen, ihn der entsprechenden Variablen zuordnen und speichern. Wie würde ich darüber gehen? – user2521326

25

Um die json zu schreiben:

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

die json zu lesen:

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

Offensichtlich tut dies keinen Fehler, obwohl überhaupt zu prüfen.

0

Sie können immer JSON.stringify die JSON auf der Client-Seite mit jQuery, etwa so:

var dataForJson = JSON.stringify(your_aray); 

Dann auf der Server-Seite schreiben, als ist (keine Notwendigkeit für json_encode):

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

wenn Sie die Daten in jSON-Datei unter einem einfügen wollen, ist sehr nützlich

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)); 

}