2015-08-15 5 views
0

Моя голова вот-вот взорвется. Я не могу понять, что здесь происходит. Ниже приведен мой код для обработки запроса ajax.Проблема с синтаксисом - сравнение XMLHttpRequest.responseText со строкой

xmlhttp_DELrep.onreadystatechange = function(){ 
    if(xmlhttp_DELrep.readyState == 4 && xmlhttp_DELrep.status == 200){ 

     if(xmlhttp_DELrep.responseText == 'delete_ok'){ 
      document.getElementById(replyboxID).style.display='none'; 
      console.log('delete success!'); 
     }else{ 
      console.log('delete fail'); 
      console.log('xmlhttp_DELrep.responseText: '+ xmlhttp_DELrep.responseText); 
     } 
    } 
} 

Это ответ, который я получаю через консоль:

delete fail 
xmlhttp_DELrep.responseText: delete_ok 

Я не понимаю, почему мой первый «если» заявление не выполняется при условии, что xmlhttp_DELrep.responseText делает действительно равны ' delete_ok '- как показано на консоли. Пожалуйста, кто-нибудь может помочь?

+3

Возможно, где-то есть пробелы. Попробуйте 'console.log (" '"+ xmlhttp_DELrep.responseText +"' ");'. –

+0

Я сталкиваюсь с тем, что вы получаете ответ от серверных сценариев. Если вам не нужно использовать ответ в качестве вывода, я рекомендую вам использовать номера (200 = ОК, 404 = не найдено и т. Д.). Это упростит работу приложения –

+0

@torazaburo, вы были правы. используя ваш код, я обнаружил, что были введены колоссальные пробелы где-то справа от моего xmlhttp_DELrep.responseText. Я использовал trim(), чтобы избавиться от них, и все работает так, как должно. Если вы ответите в ответ, я могу принять его. Большое спасибо! – dave

ответ

1

Вы можете иметь пробелы справа от текста ответа, который вы не можете увидеть в вашей консоли вывода. Ваш код будет работать правильно, если вы обрезаете их trim().

+0

Знаете ли вы, почему и как эти белые пробелы введены? В моих случаях линии и линии белых пространств присутствовали справа от моей строки. – dave

0

Я не знаю, решит ли он вашу проблему, но я бы попробовал разные способы сравнения строк.

Как найти в приведенных ниже ссылках, вы можете использовать:

string_a.localeCompare(string_b); 

/* 
    Returns: 
    0: exact match 
    -1: string_a < string_b 
    1: string_b > string_b 
*/ 

Другой вопрос может быть белые пространства, которые не видны в консоли вывода.

if(xmlhttp_DELrep.responseText.trim() == 'delete_ok') { ... } 

Ссылки:

https://stackoverflow.com/questions/2167602/optimum-way-to-compare-strings-in-javascript

+1

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – xShirase

+1

@xShirase Я добавил информацию, относящуюся по ссылке к ответу. –

Смежные вопросы