JavaScript javascript php problem

Split1989

hh-student.de
ID: 238425
L
9 April 2007
1.223
85
Hi.. bin gerade am proggen üben und bin da auf ein problem gestoßen..

<script type="text/javascript">
function del_pn (id){
Check = confirm("Wollen Sie diese Nachricht wirklich löschen?");
if (Check == true)
<?php include("del.php?id="+id); ?>;
}
</script>

so sieht meine function aus.

so jetzt gibtes irgendwo auf der page ein link mit onclick='del_pn("1")'

leider funzt es nicht so wie ich es will ... habe gelesen man soll ajax benutzen aber damit hatte ich noch nie zu tun.

kann mir da evtl jmd weiterhelfen?
 
Klingt danach, als hättest du nicht verstanden, dass JavaScript clientseitig, PHP serverseitig funktioniert.
 
also verstanden was da im grunde geschieht schon ... wäre aber selber nie auf die lösung gekommen da ich ajax noch nie programiert habe..

so in etwa sieht mein code aus:

HTML:
<script type="text/javascript">
function del_pn (id){
	Check = confirm("Wollen Sie diese Nachricht wirklich löschen?");
if (Check == true){
var ajaxRequest;  // The variable that makes Ajax possible!
	
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			document.myForm.time.value = ajaxRequest.responseText;
		}
	}

	ajaxRequest.open("GET", "test.php?do=del&id=" + id, true);
	ajaxRequest.send(null); 
	reload_after_del()
}
}

function reload_after_del()
{
var xmlhttp;
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("right").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","test.php",true);
xmlhttp.send();
}

</script>

vllt könnte man das ja eleganter lösen ...
 
vllt könnte man das ja eleganter lösen ...
Jupp, kann man.

Du siehst ja schon an dem Code, den du kopiert hast, dass da lauter browser-spezifisches Zeugs drin is.

Abgesehen davon ist ein logischer Fehler drin: Du verwendest AJAX. Wieso lädst du die Daten neu, wenn du noch gar nicht weißt, ob das betreffende Element überhaupt schon gelöscht worden is? ;) Is die Ausführung des Browsers schneller, als dein erster AJAX-Request (is sogar sehr wahrscheinlich), wird der zweite losgeschickt, obwohl der erste den Eintrag vielleicht noch gar nicht gelöscht hat.

Wenn du z.B. jQuery verwendest, sieht die Sache einfach nur so aus:
PHP:
function del_pn (id){
  Check = confirm("Wollen Sie diese Nachricht wirklich löschen?");
  if (Check == true){
    $.get('test.php?do=del&id=' + id, function(data) {
      $('#time').val(data);
      reload_after_del();
    });
  }
}

function reload_after_del()
{
  $.get('test.php', function(data) {
      $('#right').val(data);
  });
}
Weitaus übersichtlicher, oder? ;)

Infos:
https://www.jquery.com/
https://api.jquery.com/category/ajax/
https://api.jquery.com/jQuery.get/
 
danke .... sieht natürlich viel besser aus :D ... leider funktioniert das reload after del wohl nicht da der content nicht refresht wird...


HTML:
function del_pn (id){
  Check = confirm("Wollen Sie diese Nachricht wirklich löschen?");
  if (Check == true){
    $.get('pn_inc.php?do=del_pn&pmid=' + id, function(data) {
      $('#time').val(data);
      reload_after_del();
    });
  }
}

function reload_after_del()
{
	  $('#right').load('pn_inc.php');
  });
}

hab das jetzt so gelöst