У меня есть вызов AJAX:AJAX responseText missmatch
var ajax = new XMLHttpRequest();
ajax.open("POST", "testing.php", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function(){
if(ajax.readyState == 4 && ajax.status == 200){
var returnVal = ajax.responseText;
if(returnVal == "success"){
// Redirect
}else{
// Inform of failure
}
}
}
ajax.send("testing=1");
, что пары со следующими PHP:
if(isset($_POST["testing"])){
$formScore = checkForm($db_conx);
if($formScore == 10){
echo "success";
exit();
}else{
echo "fail";
exit();
}
}
И это прекрасно работает. Счет формы составляет «10», когда это должно быть, и значение, отправленное обратно на вызов AJAX, фактически является «успехом». По крайней мере, если я распечатать текст ответа:
$('.output').html(ajax.responseText);
значение в output
является «успех» - с пространством предыдущего слова. Я не могу выбрать пробел с помощью курсора, но он есть, когда я просматриваю HTML для страницы.
Но, несмотря ни на что, линия if(returnVal == "success")
всегда равна false. Я даже пробовал if(returnVal == " success")
, но все же ложь.
Это все код. Я даже попробовал жесткое кодирование $formScore = 10;
, чтобы убедиться, что это проблема. Несмотря на это, по какой-то причине равенство всегда выходит ложно.
Есть ли что-то очевидное, что мне не хватает? Я тестировал этот 100 различных способов и все тот же результат.
У вас, вероятно, есть пробел или спецификация перед ' Php ...' – adeneo
BOM? И нет пробелов. Все так же сложно, как может. – Birrel
Худший случай, когда вы делаете 'if (returnVal.trim() ==" success ") {', но это просто взломать, лучше отправить правильную вещь с сервера – adeneo