У меня есть проблема с ajax.responseText в условиях, когда он должен быть равен строке, которая передается из php echo из внешнего файла,
дело в том, что строка кажется не равной ajax.responseText,
но если предупреждение (ajax.responseText), это в точности строка «friend_request_sent»
function friendToggle(type,user,elem){
var conf = confirm("Press OK to confirm the '"+type+"' action for user <?php echo $u; ?>.");
if(conf != true){
return false;
}
_(elem).innerHTML = 'please wait ...';
var ajax = ajaxObj("POST", "friend_system.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
if(ajax.responseText=="friend_request_sent"){
_(elem).innerHTML = 'OK Friend Request Sent';
} else if(ajax.responseText == "unfriend_ok"){
_(elem).innerHTML = '<button onclick="friendToggle(\'friend\',\'<?php echo $u; ?>\',\'friendBtn\')">Request As Friend</button>';
} else{
alert(ajax.responseText);
_(elem).innerHTML = 'Try again later';
}
}
}
ajax.send("type="+type+"&user="+user);
}
теперь код, который я получаю из friend_system.php
...{
echo"friend_request_sent";
exit();
}
и код AJAX JS
function ajaxObj( meth, url ) {
var x = new XMLHttpRequest();
x.open( meth, url, true );
x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
return x;
}
function ajaxReturn(x){
if(x.readyState == 4 && x.status == 200){
return true;
}
}
третье условие — где оно борется, оно всегда уходит в другое, почему?
Чтобы проверить ответ ajax на любую строку, лучше обрезать текст ответа
request.responseText.trim() === "string"
Других решений пока нет …