Помогите найти ошибку в простом яваскрипте


datum
301

Подскажите где ошибка в условии яваскрипт? Скрипт всегда выводит сообщение Mail not sent.

хотя я вывожу алертом значение d и оно всегда =’success’ (тоесть должно бы выводить Mail sent Successfully.)

Отправляю форму через jquery:

 $.ajax({

type: "POST",
data: dataString,
url: "index.php?do=send_contact",
cache: false,
success: function (d) {
$(".form-control").removeClass("success");
alert(d);
if(d=='success')
{
$('.loading').fadeIn('slow').html('<font color="#48af4b">Mail sent Successfully.</font>').delay(3000).fadeOut('slow');
}
else
{
$('.loading').fadeIn('slow').html('<font color="#ff5607">Mail not sent.</font>').delay(3000).fadeOut('slow');
}
}
});

в пхп обрабатываю так:

if(isset($_GET['do']))

{
$response = array();
switch($_GET['do'])
{
default: $d = 'Команда не распознана!'; break;
case 'send_contact':
$d = 'success';
break;
}
die(json_encode($d));
}


timo-71
datum:
вывожу алертом значение d и оно всегда =’success’

Вероятно,

'success'!='"success"'
 

$d = 'success';
....
die(json_encode($d));

Давно с jquery не дружу. Насколько помню dataType, если нет, то на основе миме типа ответа. Т.е. если не application/json, то вероятно, ответ (d) будет в кавычках.


Dreammaker

datum, если проблема в json, как описал timo-71, то по идее там массив возвращаться должен, а не строка.


onep

……………………..


infant
datum:
хотя я вывожу алертом значение d и оно всегда =’success’

выводите не алертом в консоль браузера через console.log(d) , тогда сможете увидеть более точную информацию, alert для дебага не лучший вариант.


onep

У меня консоли не определяет data: dataString (ReferenceError: dataString is not defined)

data: «dataString»

Не определяет GET при объявленном type: «POST» (index.php?do=send_contact 404 (Not Found))


timo-71
timo-71:
то на основе миме типа ответа. Т.е. если не application/json

Затупил:( Кавычки всегда будут, что естественно, это ж строка.

ResponseHeader application/json 
response: "aaa"
typeof response: string
aaa==this.responseText: false
aaa==this.responseText.replace(/['"]+/g, ''): true

if(xhr.status === 200) {
console.log(
'ResponseHeader', ResponseHeader,
'response:', this.responseText,
'typeof response:', typeof this.responseText,
'aaa==this.responseText:', 'aaa'===this.responseText,
'aaa==this.responseText.replace(/[\'"]+/g, \'\'):',
'aaa'===this.responseText.replace(/['"]+/g, '')
);

——— добавлю:

5 минут на проверку, а днем их не было;(


Sitealert

datum, короче. резюме из всего написанного:

вместо

if(d=='success')

напиши

if(d=='"success"')

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *