Ajax -> $(ajax) Response Text Leer oder undefined

DiDiJo

Erfahrenes Mitglied
Hi Leute,

ich habe ein Problem mit meinem neuen AJAX Formular.

Und zwar möchte ich PER JS / Ajax ein Formular abschicken und entweder Fehler ausgeben, wenn nicht alle nötigen Daten eingegeben wurden, oder eine Erfolgsmeldung ausgeben.

Hier mal der grobe Aufbau:
HTML:
<form name="kformular" id="kformular" method="post" onsubmit="return checkForm(this);">
[...]
</form>

Code:
function checkForm(f){
	var name;
	var error = 0;		
	var auswahl = 0;
	var error_text = '';

	error_content = document.getElementById('error_content');	
	$('#error_box').css('display','none');

        [Eingabeprüfung]

	if (error > 0) {				
		alertBasicErrorMessage(error_text)
		return false;
		}
	else {
		submitAjaxForm(f);
		return false;
	}
}


function submitAjaxForm(f) {
  form_id = f.id;  
  data_vars = $('#'+form_id).serialize();
  var response = ''  
  //Icon während des Requests zentrieren und einblenden
  centerElement('ajax_loader');
  $('#ajax_loader').show();
  
  //Request abschicken
  response = $.ajax({
	//Ort des Skriptes in dem die per GET übertragenen Daten verarbeitet werden sollen
	url: "http://w00d47e1.dd21020.kasserver.com/modules/ajax.submitForms.php",
	//Angabe der GET Methode, auch POST wäre möglich. Allerdings nur sinnvoll
    //bei größeren Datenmengen
	type: "GET",
	
	//async: false,
	
	//Daten die gesendet werden sollen			
	data: data_vars,		
	//bei Antwort des Requests (Response)
	success: function (text) {				
	//wenn saveData.php true bzw. den Status 1 zurückliefert	
		f.reset();					
	}
			
  });
  $('#ajax_loader').hide();	
 
 //alert(String(response));


Hier mal ein Auszug aus der ajax.submitForm.php
PHP:
if ($_REQUEST['form_type'] == 'immo_direkt') {

				
$MAIL->send_mail($mailName, $mailAbsender, $mailSubject, $message, $mailEmpf, '');

return addslashes('Vielen Dank für Ihre Objektanfrage. Wir werden uns schnellstmöglicht bei Ihnen melden.');

}

Ich habe bis eben gedacht, dass ich per return oder echo das ausgeben muss, was ich in meinem response-text erhalten möchte ...

Also ich möchte in 'success: function (text) ' (text) meine Ausgabe aus der PHP Datei erhalten, damit ich nach dem Abschicken des Formulars eine individuelle Erfolgsmeldung ausgeben kann. Aber wie gesagt ... bei mir bleibt der Response Text konsequent leer ... Kann mir jemand von euch sagen, was ich falsch mache ?

P.S. Die Ajax Anfrage funktioniert übrigens wunderbar ... mein PHP Code wird erfolgreich abgeschickt.

mfg DiDi
 
1.Liegen PHP und JavaScript auf dem gleichen Host?
2.Wenn du die URL ohne JavaScript von Hand aufrufst, bekommst du dann die erwartete Ausgabe?
 
1. Die beiden dateien liegen auf dem selben server. Allerdings zeigt die domain über die ich arbeite auf folgendes verzeichnis:

/homepages/kunden/[kdnr_nr]/

hier liegen 4 Dateien: index.php, search.php, details.php ... die alle die config.php (mit basis_variablen) includieren.

Diese Dateien includieren dann alle die dateien aus dem entsprechenden template:
/templates/layout_xyz/
hier gibt es dann wieder die index.php, search.php und details.php die dann die richtige seite dastellen. So ist gewährleistet, dass mehrere User das geliche oder ein anders Layout erhalten.

diese ajax.submitform.php liegt aber auf:
/modules/ajax.submitform.php

Kann es wegen der Ordnerstruktur zu Fehlern kommen (Sicherheitsbeschränkungen von JS)

2. Wenn ich die PHP Datei ganz normal über den browser aufrufe erhalte ich meine ausgabe. Das komplette PHP Skript wird ja auch ausgeführt und ich erhalte die MAil aus meinem Kontaktformular ... bloß die Ausgabe erhalte ich nicht zurück wenn ich das ganze per AJAX versuche.
 
Falls du Firefox benutzt, installiere sofort das Plugin HttpFox (https://addons.mozilla.org/en-US/firefox/addon/6647/). Wenn man auf der Suche nach Fehlern ist, genau wie du es jetzt bist, ist das Gold wert. Du siehst ob der Request an kommt, was geschickt wird und ob er auch wieder zurück kommt und was bei dir alles ankommt.
Der "Net"-Tab von Firebug ist da auch recht hilfreich, aber um HttpFox komme ich nicht mehr herum.
 
das plugin ist ja super ... habe damit den fehler finden können: 'BAD_DOM_URL' ... ich hatte die ajax.php Datei falsch angebunden ... jetzt passt es :)
 

Neue Beiträge

Zurück