Autor Zpráva
rudla
Profil
Ahoj, hledal jsem různě na internetu a tady na diskusi něco, co by mi pomochlo, ale buď jsem se vyjadřoval špatně, nebo tu asi tohle snad není.
Mám v podstatě primitivní dotaz. Jakým způsobem přepsat obsah souboru řekněme "soubor.txt"?
V php to jde jednoduše pomocí fwrite(), jenže to vyžaduje zase to přesměrování.
Hodila by se i metoda na pouhé doplnění textu do dokumentu, zda-li to jde.

Děkuju moc za rady.
Radek9
Profil
rudla:
AJAX jen pošle nějaký požadavek (GET/POST) na nějaký soubor (takře např. PHP script), který to zpracuje.
rudla
Profil
Radek9:
Máš na mysli něo takového? http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
mimochodec
Profil
rudla:
Mám v podstatě primitivní dotaz. Jakým způsobem přepsat obsah souboru řekněme "soubor.txt"?
V php to jde jednoduše pomocí fwrite(), jenže to vyžaduje zase to přesměrování.

Možná by to chtělo tu otázku zformulovat líp. Co ti vadí na přesměrování?
rudla
Profil
mimochodec:

Možná by to chtělo tu otázku zformulovat líp.
V podstatě to Radek9 pochopil správně. Jen dokázat zpatlat nějak dohromady kód, který by fungoval.

Co ti vadí na přesměrování?
Víceméně všechno. Je to dost otravné hlavně v případě, že chci zůstat na stejné stránce (protože se v ní třeba něco děje).


EDIT: Ještě bych chtěl doplnit, že by se hodilo něco takového provést pomocí formuláře. Zapomněl jsem dodat.
mimochodec
Profil
rudla:
V podstatě to Radek9 pochopil správně. Jen dokázat zpatlat nějak dohromady kód, který by fungoval.

Radek9 odpověděl dost univerzálně. Nevyvozoval bych z toho, že něco pochopil.

1. není jasné, jestli opravdu potřebuješ AJAX. Z toho, že chceš zapisovat něco do souboru, to nijak nevyplývá.
2. není jasné, co ti vadí na přesměrování. Běžné zpracování odeslaného formuláře probíhá tak, že se z načtou odeslané hodnoty, něco se provede (třeba nějaký fwrite) a pak se někam přesměruje, třeba na tu stránku s formulářem, ale už bez těch odeslaných dat.

Jestli ti jde o eliminaci vícenásobného odeslání pomocí F5, toto je ten postup. AJAX řeší to, když chceš odeslat data ke zpracování v php, aniž by se stránka znovu načítala. Jestli to chceš využít, tak budiž, ale jak říkám, nesouvisí to s nějakým fwrite. A další věc je, že AJAX nerovná se nutně předávání dat pomocí xml.
Jestli rozumíš tomu, co píšu a trváš na AJAXu, tak můžu poradit konkrétněji (nebo kdokoliv jiný).
rudla
Profil
mimochodec:
Já netvrdím, že to souvisí s fwrite, ale že je to "něco jako fwrite v php".
Netuším, jak se to dělá, tak mi hned prosím nevyčítej, že nemám pravdu.

Na AJAXu trvám, Radek9 tu nastínil přeposílání dat pomocí POST/GET do php, kde se operace provede. V tom případě bych byl moc rád, kdyby mi někdo poradil s tímhle. Myslím že to by vystihovalo moji žádost. :)
Radek9
Profil
rudla:
Jednoduchý požadavek se dá napsat takhle:
var xhr, file = "fwrite.php", post = "klic=hodnota&klic2=hodnota2"; // Klíče a hodnoty v post prohnat případně encodeURIComponent
if (window.XMLHttpRequest) {
  xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
  xhr = new ActiveXObject("MSXML2.XMLHTTP");//Microsoft.XMLHTTP
}
if (xhr) {
  xhr.open("POST", file, true);
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xhr.setRequestHeader("Content-Length", post.length);
  xhr.setRequestHeader("Connection", "close");
  xhr.onreadystatechange = function () {
    if (this.readyState === 4) {
      if (this.status === 200) {
        // Vše proběhlo správně, v this.responseText máš odpověď serveru
      }
      else {
        // Nastala chyba
      }
    }
  };
  xhr.send(post);
}
rudla
Profil
[#8] Radek9
Na toto téma jsem úplně zapomněl a omlouvám se.
Chtěl bych se zeptat, jak už jsem zmínil, jak výše zadaný scrpit zprovoznit přes formulář. Chci hodnoty, které budou odesílány přes post zadat ve formuláři a následně je odeslat. Formulář by se měl po úspěšném odeslání smazat, což zvládnu, ale jde mi o to, jak to spojit.

Měl by někdo nápad? Děkuju moc.

Za script samozřejmě taky děkuju, funguje přesně tak, jak by měl. ;)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0