Jquery "success" Problem

maxxe

Grünschnabel
Hallo,
ich bin gerade dabei ein Favoriten Module zuschreiben.
Jetzt bin ich auf folgendes Problem gestosen, wenn ich "ADD" drücke wird das ganze gesendet aber es wird nicht die gewünschte Funktion ausgegeben.

Ich erhalte im Firebug "OK" als Rückgabe aber es wird das "else" ausgeführt.
Woran könnte das liegen?



Code:
//Favourite

 $(document).ready(function() {

$("#add_fav").click(function(){

var link = $("#favlink").attr("value");

$.ajax({
type: "POST",
url: "fav_core.php",
data: "fav=add&link="+ link,
success: function(html){
	
if(html == 'OK')
{ 
	
					$("#showfav").animate({backgroundPosition: "0px -35px"},1000);
					$("#showfav").animate({backgroundPosition: "0px 0px"});

} else {
	$("#showfav").animate({backgroundPosition: "0px -35px"},1000);
} 
}									
});
         return false;
});

});

fav_core.php

PHP:
<?php 
	
session_start(); 

	require_once("funktionen.php");
	require_once("header.php");

if(!$_POST['fav']){
	echo"error"; 
}
else{
	
	switch($_POST['fav']){
case "add":
			
$link=mysql_real_escape_string($_POST['link']);
$user=mysql_real_escape_string($_SESSION['user_id']);

$result = dbquery("SELECT user_id, link  FROM ".DB_meinedatenbank."favoriten WHERE user_id='".$user."' AND link='".$link."'"); 

if(dbrows($result)){
	
echo"error";	
	
} else{

mysql_query("INSERT INTO ".DB_meinedatenbank."favoriten (user_id, link) VALUES ('$user','$link')") OR die("Could not send the message: <br>".mysql_error()); 
			
echo'OK';
}
break;
}
}

?>

Funktionen

PHP:
function dbrows($query) {
	$result = @mysql_num_rows($query);
	return $result;
}


function dbquery($query) {
	$result = @mysql_query($query);
	if (!$result) {
		echo mysql_error();
		return false;
	} else {
		return $result;
	}
}
 
Ein alert(html) direkt am Anfang der success-Funktion gibt auch wirklich nur "OK" aus und sonst nichts?
Und wozu hast du zwei Animationen im if-Teil direkt nacheinander? Im besten Fall wird eine der beiden korrekt ausgeführt, im schlechten Fall kommt irgendeine Mischung zwischen beiden dabei raus.
 
Ein alert(html) direkt am Anfang der success-Funktion gibt auch wirklich nur "OK" aus und sonst nichts?
Ja es gibt nur "OK" aus.

Und wozu hast du zwei Animationen im if-Teil direkt nacheinander?
soll bewirken dass das Bild einmal blinkt .
Hab jetzt eine Animation entfernt und es besteht immernoch das selbe Problem, es wird nur der "else" Teil ausgeführt.
 
Das kann nicht sein. Ein alert(html == 'OK') müsste ja dann auch "true" ergeben. Wenn nicht, dann bekommst du nicht nur "OK" zurück.
Vielleicht ist vorne oder hintendran noch ein Leerzeichen (oder newline, tab, etc.) welches irgendwo vor oder nach "<?php?>" steht und mitgesendet wird.
 
OK danke für den TIP.
Als Alert bekomme ich jetzt "false".
Hab jetzt darauf nochmal alles nach (tabs, leerzeichen,etc) durchsucht, hab auch nochmal alles neu gschrieben und erhalte immer noch "false".
Ich weis jetzt nicht woran das noch liegen könnte.
 
Was gibt denn alert(typeof html) aus?
Möglicherweise liegt das Problem an einem falschen Mimetype.
Eventuell mal "'OK' == html" anstelle von "html == 'OK'" um die richtige Umwandlung zu erzwingen.
Und dann setz mal am Anfang deines PHP "header('Content-type: text/plain');"

Edit: oder einfacher der ajax-Funktion noch einen weiteren Parameter mitgeben. dataTypeString: "text"
 
Zuletzt bearbeitet:
Und wenn html.length auch 2 ausgibt, gebe ich auf. Teste es mal noch in einem anderen Browser und sonst fällt mir nichts mehr ein.
 
Vielen Dank für deine Hilfe.
Ich habe nochmal mein ganzes Module neugeschrieben und bin auf ein Leerzeichen im "head" Bereich gestoßen.

Mit freundlichen Grüßen

Maxxe
 

Neue Beiträge

Zurück