Как подружить две переменные, где одна из ajax?

drkrol

Постоялец
Регистрация
6 Мар 2016
Сообщения
112
Реакции
11
Здравствуйте. Ситуация такова.

Есть php файл, который обращается к бд и выводит значение таблицы. Открыв свой php файл я увижу ["2016-12-03"], ["2016-11-25"],

На сайте у меня ajax функция, которая принимает это php сообщение:
Код:
$.ajax({
                type: "POST",
                url: "/php.php",
                data: $('#ajaxlogin').serialize(),
                success: function(msg){
                $('.a-info').text('Успешное подключение')
                $('.brondate').text(msg);
                }
            });

div brondate без проблем принимает вид: ["2016-12-03"], ["2016-11-25"],

Ниже у меня идёт код календаря с диапазоном дат
Код:
var array = ["2016-11-20","2016-11-25","2016-12-03",]

$('#date_range').datepicker({
    range: 'period', // режим - выбор периода
    numberOfMonths: 2,
    dateFormat: "yy-mm-dd",
    minDate: 0,
    onSelect: function(dateText, inst, extensionRange) {
        // extensionRange - объект расширения
      $('[name=startDate]').val(extensionRange.startDateText);
      $('[name=endDate]').val(extensionRange.endDateText);
    }
  });
// затемнение дат
$('#date_range').datepicker('option','beforeShowDay',
     function(date){
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return [ array.indexOf(string) == -1 ,"", null ]
    }
);

Обратите внимание на "затемнение дат". В календаре даты, которые указаны в array, неактивны. Я хотел эту "неактивность" брать из бд, но array не хочет принимать значение msg от php
Как подружить array с сообщением из php? Я попытался сделать так
Код:
var bron = msg;
                }
            });
var array = bron

Но ничего не заработало.
 
возвращай аяксом не строку а массив (json_encode), добавь опцию dataType: 'json'
 
Код:
array.indexOf(string) == -1
Здесь ВСЕГДА будет true, потому что indexOf в массивах не ищет + ajax по умолчанию выполняется асинхронно + нафига два раза инициировать на одном элементе плагин?
 
Последнее редактирование:
возвращай аяксом не строку а массив (json_encode), добавь опцию dataType: 'json'
Добавил dataType: 'json'. У меня при успешном подключении к php, текст в диве a-info должен мне это сообщить: $('.a-info').text('Успешное подключение') . Но он увы молчит.
Здесь ВСЕГДА будет true, потому что indexOf в массивах не ищет.
Прикол не в массиве. Прикол в том, что код за пределами ajax не работает.
Код:
$.ajax({
                type: "POST",
                url: "/php.php",
                data: $('#ajaxlogin').serialize(),
                success: function(msg){
                $('.a-info').text('Успешное подключение')           
                }
            });
$('.brondate').text(msg);
.brondate не отобразит msg.

Я в php файле свои данные уже привёл в вид массива.
PHP:
$query = mysqli_query($connect, "SELECT * FROM `date`");
while($row = mysqli_fetch_assoc($query)){
    echo '["'."$row[bron]".'"], ';
}
echo $row

Нужно просто как-то донести эту информацию из блока, до array.
 
PHP:
//php
$query = mysqli_query($connect, "SELECT * FROM `date`");
$bef = array();
while($row = mysqli_fetch_assoc($query)){
//echo '["'."$row[bron]".'"], ';
$bef[] = $row['bron'];
}
die(json_encode($bef));

//js
$.ajax({
                type: "POST",
                url: "/php.php",
                dataType: 'json',
                data: $('#ajaxlogin').serialize(),
                success: function(resp){ 
                       
                     $('.a-info').text('Успешное подключение');

// затемнение дат
$('#date_range').datepicker('option','beforeShowDay',
     function(date){  
          if($.inArray($.datepicker.formatDate('yy-mm-dd', date ), resp) > -1) {
            return [false,'', null];
         }  else  {
            return [true,'', null];
         }
    });
    
                }
});
 
Последнее редактирование:
PHP:
//php
$query = mysqli_query($connect, "SELECT * FROM `date`");
$bef = array();
while($row = mysqli_fetch_assoc($query)){
//echo '["'."$row[bron]".'"], ';
$bef[] = $row['bron'];
}
die(json_encode($bef));

//js
$.ajax({
                type: "POST",
                url: "/php.php",
                dataType: 'json',
                data: $('#ajaxlogin').serialize(),
                success: function(resp){
                      
                     $('.a-info').text('Успешное подключение');

// затемнение дат
$('#date_range').datepicker('option','beforeShowDay',
     function(date){ 
          if($.inArray($.datepicker.formatDate('yy-mm-dd', date ), resp) > -1) {
            return [false,", null];
         }  else  {
            return [true,", null];
         }
    });
   
                }
});
Вот. У Absolute то, что мне нужно!
Код:
function myFunc(a){
$('.brondate').text(a);
}
Не знаю, на сколько он правильный, но, как минимум, он короче. Спасибо, Absolute
 
Назад
Сверху