Also ich hab jetzt echt viele Tutorials durch aber es will einfach nicht so wie ich es will -.-
Der springende Punkt ist dass ich auf einer Seite mehrere posts hab die bewertet werden sollen können, dh ich kann nicht einfach ein ganzes Formular verschicken (was übrigens geklappt hat) sondern öfters ein oder zwei strings.
Ein Versuch darunter (der mir gefallen hat, weil ich einfach durch links voten lassen kann und mir damit das formular spare)
Die Html-datei:
...
<s***** type="text/javas*****" src="jquery-1.7.1.min.js"></s*****>
<s***** type="text/javas*****">
function vote(post,vote) {
params = "post=" + post + "&vote=" + vote;
new Ajax.Request('/save.php', {
postBody: params,
onLoading: alert('done')
});
}
</s*****>
...
<a href="#" onclick="vote("54166","pos"); return false;">Plus</a>
<a href="#" onclick="vote("54166","neg"); return false;">Minus</a>
...
und save.php:
<?php
$data=$_POST["post"]."--".$_POST["vote"];
$fp=fopen("save.d","w");
fputs($fp,$data);
fclose($fp);
?>
Problem: save.php arbeitet nichtmal durch.
also wenn ich in save.d etwas reingeschrieben habe wird das nicht gelöscht. (was ja passieren sollte, da ich save.d mit fopen("save.d","w") aufrufe)
kann es sein dass nicht jeder webserver solche ajax requests zulässt?
gibt es noch eine andere Möglichkeit einen String über POST einer php datei zukommen zu lassen ohne dass diese Seite aufgerufen wird?
-----
Problem gelöst mit:
html datei:
...
<s***** type="text/javas*****">
var request = false;
// Request senden
function setRequest(value) {
// Request erzeugen
if (window.XMLHttpRequest) {
request = new XMLHttpRequest(); // Mozilla, Safari, Opera
} else if (window.ActiveXObject) {
try {
request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
} catch (e) {
try {
request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
} catch (e) {}
}
}
// überprüfen, ob Request erzeugt wurde
if (!request) {
alert("Kein Verbindung zum Vote-Server");
return false;
} else {
var url = "save.php";
// Request öffnen
request.open('post', url, true);
// Requestheader senden
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// Request senden
request.send('vote='+value);
// Request auswerten
request.onreadystatechange = interpretRequest;
}
}
</s*****>
...
<a href="javas*****
:setRequest('p.11111')">Plus</a>
<a href="javas*****
:setRequest('m.11111')">Plus</a>
...
und der php datei:
<?php
header('Content-Type: text/html; charset=utf-8'); // sorgt für die korrekte Kodierung
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0'); // ist mal wieder wichtig wegen IE
$data=$_POST["post"].time().$_POST["vote"];
$fp=fopen("save.d","w");
fputs($fp,$data);
fclose($fp);
?>
Danke für euer Bemühen