Autor Zpráva
dusanga
Profil
Prosim o pomoc.
Chcem pomocou AJAX-XMLHTTPREQUEST zapisat premennu array do textoveho suboru na server.
Mam nasledovny kod:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">;
<title></title>
<script type="text/javascript">
var prem=new Array();

prem[0]='prem c1';
prem[1]='prem c2';
prem[2]='prem c3';

function loadXMLDoc()
{
var url="pr_fopen_p.php";

if (window.XMLHttpRequest)
{// kod pre IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp=new XMLHttpRequest();
}
else
{// kod pre IE6, IE5
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
{
document.getElementById('test').innerHTML=xmlhttp.responseText
}
}

xmlhttp.open('POST',url,true);
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send('pre='+prem);

}
</script>

</head>
<body>
<div id="test">
<h2>Stlacenim BUTTONu zapis udaje do suboru test1.txt</h2>
</div>
<button type="button" onclick="loadXMLDoc()">Daj do suboru</button>

</body>
</html>

PHP kod

<html>
<body>

<?php
echo ("Ulozime obsah premennej text do suboru subor.txt<br>");
$text = $_POST['pre'];
$n_sub="test1.txt";
echo ($n_sub);
echo ($text);
$subor = fopen($n_sub, "a+");
fwrite($subor, $text);
fclose($subor);

?>

</body>
</html>

Po spusteni to vyhadzuje chybu v PHP kode , ze nepozna premennu 'pre'.

Pokial to skusam s metodou 'GET' tak to ide v pohode.
V PHP je pouzite $_GET a v HTML mam pouzite:
var url="pr_fopen.php?pre="+prem;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);

Poradte ako to ma byt s POST.
Radek9
Profil
dusanga:
Tady máte moji univerzální funkci:
function ajax(file, id, params){
  var send, ajax_object = false;
  if(window.XMLHttpRequest){
    ajax_object = new XMLHttpRequest();
  }
  else if(window.ActiveXObject){
    ajax_object = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if(ajax_object){
    if(params){
      send = "";
      for(i in params){
        i = encodeURI(i).replace(/\&/g, "%26");
        params[i] = encodeURI(params[i]).replace(/\&/g, "%26");
        send += i+"="+params[i]+"&";
      }
      send = send.substr(0, send.length-1);
      ajax_object.open("POST", file, true);
      ajax_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      ajax_object.setRequestHeader("Content-length", send.length);
      ajax_object.setRequestHeader("Connection", "close");
    }
    else{
      send = null;
      ajax_object.open("GET", file, true);
    }
    ajax_object.onreadystatechange = function(){
      if(ajax_object.readyState==4 && ajax_object.status==200 && id!=""){
        document.getElementById(id).innerHTML = ajax_object.responseText;
      }
    }
    ajax_object.send(send);
  }
}
A použití je zhruba takovéto:
ajax("soubor.php", "id_elementu");//Pro GET
ajax("soubor.php", "id_elementu", {name1: "hodnota1", name2: "hodnota2"});//Pro POST
Parametr pro ID a hodnoty může být prázdný, povinný je jen pro adresu.
dusanga
Profil
Dakujem za reakciu na moj dotaz. Moc mi to sice nepomohlo, potrebujem zistit kde robim chybu a nie prevziat pracu nikoho ineho. Samozrejme vas kod prestudujem.
Este raz diky.

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0