[jQuery] Mit Ajax Variable übergeben

newwarrior

Erfahrenes Mitglied
Hallo,

ich habe ein kleines Messagecenter.
Dort können User Nachrichten makieren.
Dazu müssen Sie einfach nur auf eine Flage klicken, und dann soll die Mail ID mit JS & AJAX & jQuery übergeben werden, und dann in einem PHP Script, der Eintrag in der DB geändert werden.
Wenn das erfolgreich geschehen ist, dann soll der Div neugeladen werden.
Das letzte ist kein Problem, auch eine Variable an eine JS Funktion zu übergeben, doch, wie kann ich jetzt mit AJAX & jQuery, die Variable weiter an das PHP Script leiten ohne das die Seite neu geladen wird?

Danke
 
jQuery hat doch so eine schöne Dokumentation, dass man schon beim Überfliegen der Seite das hier gefunden hätte:
Javascript:
$.post("test.php", { name: "John", time: "2pm" },
   function(data){
     alert("Data Loaded: " + data);
   });
Dabei sind folgendes die übergebenen Variablen:
Javascript:
/* Variablenname: Wert [, ...] */
{ name: "John", time: "2pm" }
Und in data sind die von dem PHP-Skript ausgegeben Daten drin.

Nachzulesen hier: jQuery.post()
 
Also ich habe mal folgendes versucht:

Code:
<script>
			  function flag_mail()
			  {
				$.get("../../scripts/server.php", { flag_mail: "true", mail_id: "'.$mails_data->mail_id.'"});
			  }	
			</script>
<img src="http://www.tutorials.de/img/mainpage/flag_off.png" alt="flag" onclick="flag_mail();"/>&nbsp;

Die Server.php sieht dann so aus:

PHP:
if(isset($_GET['flag_mail']) AND $_GET['flag_mail'] == true)
{


	$sql_mail = 'UPDATE user_mail SET mail_flaged = "1" WHERE mail_id "'.$_GET['mail_id'].'"';
	mysql_query($sql_mail) OR die(mysql_error());
}

Aber es passiert rein gar nichts
 
Der kann dir doch auch nichts ausgeben, wenn du a) nicht den veränderten Text lädst und b) diesen dann nicht ausgibst (beispielsweise mit echo oder print).
 
Schau doch erstmal, ob die Aktualisierung durchgeführt wird, wenn du das Skript direkt aufrufst, also so in etwa:
server.php?flag_mail=true&mail_id=x (x muss durch die entsprechende ID ersetzt werden)

Außerdem funktioniert das hier auch nicht:
Code:
<script>
function flag_mail(){
    $.get("../../scripts/server.php", { flag_mail: "true", mail_id: "'.$mails_data->mail_id.'"});
}
</script>
<img src="http://www.tutorials.de/img/mainpage/flag_off.png" alt="flag" onclick="flag_mail();"/>
Ansonsten gibt es auch noch einen Unterschied zwischen "true" und true, denn das erste ist eine Zeichenkette, dass zweite ein boolscher Wert.
 
Was du oben ansprichts, wegen:

'.$mails_data->mail_id.'

das wird durch php eingetragen, das ganze Script steht eigentlich in einer PHP Schleife.
Ich habe alles versucht, ich habe das mit true angepasst und auch direkt den Link angepasst, hat nichts gebracht.
Dann habe ich ihn ohne JS ausgefürht, also oben direkt in die Zeile eingeben, da hat er die DB Werte geändert.
Nur wenn ich es so machen will:

Code:
<script>
			  function flag_mail()
			  {
				$.get("tpl/scripts/server.php?flag_mail=true&mail_id=7", { flag_mail: "true", mail_id: "'.$mails_data->mail_id.'"});
			  }	
			</script>

passiert rein gar nichts
 
Falls das Verzeichnis tpl im Wurzelverzeichnis liegt, dann solltest du davor noch einen Schrägstrich einfügen, so dass das Ganze so aussieht:
Javascript:
<script>
function flag_mail() {
    $.get("/tpl/scripts/server.php?flag_mail=true&mail_id=7", { flag_mail: "true", mail_id: "'.$mails_data->mail_id.'"});
}
</script>

PS: Warum hängst du eigentlich die Parameter an die Datei an, wenn du sie außerdem noch als Parameter in der Funktion übergibst?
 
Problem gelöst.
Ich habe den JS Teil in den Headbereich gepackt, dann habe ich die Funktion ein wenig verändert:

Code:
function flag_mail(mail_id) {
	$.get("tpl/scripts/server.php", { flag_mail: "true", mail_id: +mail_id});
}

Und nun klappt es.
Danke für deine Hilfe.

Keine Ahnung warum ich es mir so schwer gemacht habe.

Gruß

NW
 

Neue Beiträge

Zurück