ajax

Sebbo90

Mitglied
Hi,

ich beschäftige mich derzeit mit Ajax, ich denke das der Fehler im JS liegt und nicht in der process.php. Für die success function übergebe ich auch '1', aber es springt sofort zur else variante.

Vll wisst ihr wo hier im jquery der Fehler liegt?

PHP:
$(document).ready(function() {
		$('#submit').click(function () {		
		var email = $('input[name=email]');
		
		if (email.val()=='') {
			email.addClass('hightlight');
			$('#email').val("Email eingeben");
			return false;
		} else email.removeClass('hightlight');
				$('#email').val("");
		
		var data = 'email=' + email.val();
		
		$('.text').attr('disabled','true');
		
		$('.loading').show();
		
		$.ajax({
			url: "process.php",	
			type: "GET",			
			data: data,		
			cache: false,
			success: function (html) {				
				if (html==1) {					
					$('.form').fadeOut('slow');					
					$('.done').fadeIn('slow');
				} else alert('Sorry, da lief was schief');				
			}		
		});
		return false;
	});	
});
 
Edit: Mein erster Vorschlag war Quatsch, passiert wenn man JQuery und Prototype mischt...

Was steht denn in html, wenn du es per alert() ausgibst? mach am besten noch Trennzeichen außenrum, so siehst du auch eventuelle Leerzeichen.
 
Zuletzt bearbeitet:
das hier steht im Alert:
Code:
<br />
<b>Notice</b>:  Undefined offset:  0 in <b>/var/customers/webs/sebbo2/newsletter/process.php</b> on line <b>45</b><br />
<br/><a href="index.php">Zuruck</a>

Hier mal die process php (Ausschnitt)
PHP:
<?php
$errors = '';
$email = ($_GET['email']) ?$_GET['email'] : '';

if ($_POST) $post=1;
if (!$email) $errors[count($errors)] = 'Bitte email eingeben.'; 

if (!$errors) {

	//wenn per Post gesendet
	if ($_POST) {
		echo 'Danke! Wir haben deine Email eingetragen.';
		
	//Für ajax
	} else {
		echo '1';
		@mysql_query("INSERT INTO newsletter SET email = '".mysql_real_escape_string($email)."'");
	}


} else {
	for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>';
	echo '<a href="index.php">Zuruck</a>';
	exit;
}
?>
 
Deine Variable $errors ist niemals false, da du sie direkt mit einem leeren String initialisierst, daher springt deine Datei immer in den ersten Else-Zweig.
Probier's mal so: (!ungetestet!)
PHP:
<?php
$errors = array();
$email = ($_GET['email']) ?$_GET['email'] : '';

if ($_POST) $post=1;
if (!$email) array_push($errors, 'Bitte email eingeben.'); 

if (sizeof($errors) > 0) {

    //wenn per Post gesendet
    if ($_POST) {
        echo 'Danke! Wir haben deine Email eingetragen.';
        
    //Für ajax
    } else {
        echo '1';
        @mysql_query("INSERT INTO newsletter SET email = '".mysql_real_escape_string($email)."'");
    }


} else {
    for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>';
    echo '<a href="index.php">Zuruck</a>';
    exit;
}
?>
 
jetzt wird nur noch die email nicht an die process php übergeben.

Edit: Mein fehler, habs beseitigt^^. vielen dank

nun funktioniert es
 
Zuletzt bearbeitet:
Zurück