kan AJAX ResponseText niet testen

Mijn PHP-code reageert op een AJAX-aanroep met verschillende strings, afhankelijk ... dus ik wil het antwoord testen, maar ik heb het niet kunnen doen. Ik vond dat de responseText van een ongedefinieerd type was, dus beproefd type casting:

if (String(xmlhttp.responseText)=="OK")
{
   //do something
} else
{
   //display the responseText
    document.getElementById(spanID).innerHTML=xmlhttp.responseText;
}

Raad eens wat er getoond wordt? OK. (Hetzelfde zonder typecasting). Waarom?

0
Bedoel je dat het blok else wordt uitgevoerd terwijl het antwoord OK is? Zijn er spaties in het antwoord?
toegevoegd de auteur pimvdb, de bron
Probeer de tekenreekslengte van uw antwoord te controleren - waarschijnlijk niet de lengte van twee.
toegevoegd de auteur Repox, de bron
heb je geprobeerd om elke witruimte te trimmen?
toegevoegd de auteur Matt, de bron

2 antwoord

Als er echt niet meer is dan we hier zien, moet uw tekenreeks witruimte of andere niet-afdrukbare tekens bevatten. Probeer het in te korten voordat u de vergelijking uitvoert.

Edit Also try putting console logging in both your 'if' and 'else' blocks - maybe your method is being called multiple times unexpectedly and there is an odd race condition.

1
toegevoegd
& anderen (bedankt) - dezelfde uitvoer (blijkbaar 'OK' vervangen door documentelement) bij gebruik: if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {var getrimd = String (xmlhttp.responseText) .replace (/^ \ s + | \ s + $/g, ''); if (trimmed == "OK") {// do something} else {document.getElementById (spanID) .innerHTML = getrimd; } } vreemd?
toegevoegd de auteur user1043568, de bron

Probeer het volgende:

var text = xmlhttp.responseText.trim();//use trim()

if (text=="OK"){
   //do something
}else{
   //display the responseText
    document.getElementById(spanID).innerHTML=xmlhttp.responseText;
}
0
toegevoegd