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

D
На сайте с 20.09.2010
Offline
153
292

Подскажите где ошибка в условии яваскрипт? Скрипт всегда выводит сообщение 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));
}
T7
На сайте с 19.09.2018
Offline
34
#1
datum:
вывожу алертом значение d и оно всегда ='success'

Вероятно,

'success'!='"success"'

 

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

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

Dreammaker
На сайте с 20.04.2006
Offline
552
#2

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

O
На сайте с 30.09.2019
Offline
18
#3

..........................

I
На сайте с 15.03.2008
Offline
144
#4
datum:
хотя я вывожу алертом значение d и оно всегда ='success'

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

O
На сайте с 30.09.2019
Offline
18
#5

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

data: "dataString"

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

T7
На сайте с 19.09.2018
Offline
34
#6
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 минут на проверку, а днем их не было;(

S
На сайте с 30.09.2016
Offline
459
#7

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

вместо

if(d=='success')
напиши
if(d=='"success"')
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий