webForumDet fria alternativet

Problem med if()-sats [AJAX]

13 svar · 771 visningar · startad av wally_91

wally_91Medlem sedan feb. 2006488 inlägg
#1

Hej alla!

Jag undrar lite varför jag inte får detta att fungera.

I php-filen skrives det ut om inget hittades en sha1-hash.

Jag jämför i javascriptet om jag får denna hash, och om jag får det så ska det skrivas ut "Hittades inte". Problemet är att det inte skriver ut "Hittade inte". Inget ändras.

ajax_search.js

//Called when the AJAX response is returned.
function handleSearchSuggest() {
	if (searchReq.readyState == 4) {
		var ss = document.getElementById('search_suggest');
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++) {
            [B][red]if(str == "b6589fc6ab0dc82cf12099d1c2d40ab994e8410c"){
            ss.innerHTML = "<div class=\"suggest_link\">Hittade inget!</div>";[/red][/B]
            }else{
			//Build our element string.  This is cleaner using the DOM, but
			//IE doesn't support dynamically added attributes.
			var suggest = '<div onmouseover="suggestOver(this);" ';
			suggest += 'onmouseout="suggestOut(this);" ';
			suggest += 'onclick="setSearch(this.innerHTML);" ';
			suggest += 'class="suggest_link">' + str[i] + '</div>';
            
			ss.innerHTML += suggest;
		}
	  }
	}
}

Jag har provat med searchReq.responseText == "b65..." men det funkade inte heller.

Har ni några förslag?

Ni hittar hela skriptet här.

//wally_91

zcorpanMedlem sedan dec. 20042 269 inlägg
#2

Ska det inte vara if(str ... ?

wally_91Medlem sedan feb. 2006488 inlägg
#3

Verkar inte funka... (ingen förändring)

wally_91Medlem sedan feb. 2006488 inlägg
#4

Om jag säger så här då, hur ser javascripts motsvarighet till phps empty()?

colioneMedlem sedan juni 20013 386 inlägg
#5

Vad får du för resultat om du lägger in en alert(str*) precis efter for-satsen? Eller direkt på alert(searchReq.responseText);*

wally_91Medlem sedan feb. 2006488 inlägg
#6

Om jag skriver in ett namn som inte finns i databasen så kommer ingen alert upp.

Ni kan ta en titt själva på https://www.guida.nu/nytt/suggest2/

colioneMedlem sedan juni 20013 386 inlägg
#7

Du skickar aldrig med \n när du skickar tillbaka hashen. Då blir splittningen 1 långt, vilket inte uppfyller kravet i din for-loop. då 0<0 är falskt, du tar ju längden -1.

colioneMedlem sedan juni 20013 386 inlägg
#8

Det är vid såna här tillfällen som JSON är perfekt att returnera från den andra sidan. Då slipper du splitta och hålla på själv. Bara att bygga upp en array och köra json_encode() på den via php. Sedan evaluerar/går igenom jsonen och får en array. :)

wally_91Medlem sedan feb. 2006488 inlägg
#9

Jadu, och hur gör man detta? :e :q

colioneMedlem sedan juni 20013 386 inlägg
#10

http://www.json.org/
http://www.json.org/js.html
http://en.wikipedia.org/wiki/JSON
;)

Har du php > 5.2 har du en inbyggd funktion som heter json_encode(). Annars får du använda några av klasserna som är skrivna för det. :)
http://pear.php.net/pepr/pepr-proposal-show.php?id=198
http://framework.zend.com/manual/en/zend.json.html
http://sourceforge.net/project/showfiles.php?group_id=34455&package_id=188337
http://solarphp.com/class/Solar_Json
Här finns lite jämförelser mellan php-implementationerna.
http://gggeek.altervista.org/sw/article_20061113.html

Kort sagt så kan du plocka ut värdena från databasen, direkt som en array. Därefter så json-encodar du dem, vilket innebär att arrayen blir en sträng som följer javascript object literal, denna strängen som du returnerar tillbaka kommer att se ut nåt sånt här kke:

["Värde 1","Värde 2"]

Får du värdena från en källa du _vet_ är säker kan du köra eval på dem direkt och få ut en array i javascript:

var str = eval(searchReq.responseText) // searchReq.responseText är lika med ["Värde 1","Värde 2"]

Eftersom du kör eval på strängen kan man säga att du har gjort så här:

var str = new Array("Värde 1","Värde 2");
alert(str[0]) //visar "Värde 1"
alert(str[1]) //visar "Värde 2"

Är du däremot inte helt säker på källan som värdena kommer ifrån kan du använda en JSON-parser. Mer info om den finns på en av länkarna jag angav ovan.

wally_91Medlem sedan feb. 2006488 inlägg
#11

Får ta en titt imorgon. Är för trött nu... :x

wally_91Medlem sedan feb. 2006488 inlägg
#12

Nu när jag gick igenom koden såg jag att den tittar på \n:en.

var str = searchReq.responseText.split[b][red]("\n");[/red][/b]

I min php-fil så skrev jag bara ut hashet utan \n. Därför reagerade inte javaskriptet när jag skrev ut hashet (på phpsidan.)!

Som det kan gå...

Tack för all hjälp och jag ska titta på JSON om några månader :p

Tack igen,

wally_91

colioneMedlem sedan juni 20013 386 inlägg
#13

Det var väl precis det jag skrev här:

http://www.webforum.nu/showthread.php?p=1337351#post1337351

;)

wally_91Medlem sedan feb. 2006488 inlägg
#14

Doh! Hur missade jag det? :o :q

Skyller på trötthet :x

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb