Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как можно получить результат работы php скрипта после отправки данных через ajax (https://javascript.ru/forum/jquery/65900-kak-mozhno-poluchit-rezultat-raboty-php-skripta-posle-otpravki-dannykh-cherez-ajax.html)

nina_ 14.11.2016 13:46

Как можно получить результат работы php скрипта после отправки данных через ajax
 
Добрый день
Прошу помощи.

Делаю следующее:
при клике на чекбокс (с датой) должны отображаться связанные с данным
чекбоксом места без перезагрузки страницы.
Есть js скрипт, который меняет отмеченный чекбокс и отсылает выбранную дату php cкрипту:
$(function(){
    $('.checkbox-row :checkbox').change(function(){
        if (!this.checked) return;
        $('.checkbox-row :checked').not(this).prop('checked',false);
        if ($(this).is(':checked')) {
            var chk = $(this).attr("name");
            var chkVal = $(this).attr("value");
            $.ajax({
                url: 'test.php',
                type: 'post',
                data: { chk: chkVal },
                beforeSend: function() { alert(chk+ ' '+chkVal); },
                success: function(data) {$('.choose_place').load('test.php', function() {
                    alert('Load was performed.');

                });
                }
            });
        }
    });
});

Есть test.php, который делает выборку необходимых мест по переданной дате из бд:
<?php

$date_trip = isset($_POST['chk'])? $_POST['chk']:'';
$sql_select =  "SELECT date_place.id_place FROM date_place
                INNER JOIN DATE ON date.id_datetrip = date_place.id_datetrip
                WHERE date.datetrip =  '$date_trip'
                AND typeplace =  'available'";
$date_select = mysql_query($sql_select);
$count = mysql_affected_rows();
$info = '';
for($i=0; $i<$count;$i++){
    $date_info = mysql_fetch_assoc($date_select);//получаем из контейнера данные как ассоц массив

    $info.='<input type="checkbox" name="place[]" id="place_'.$date_info['id_place'].'" value="place_'.$date_info['id_place'].'">';
    $info.='<label for="place_'.$date_info['id_place'].'"></label>';
}
echo $info;

И есть текущий файл index.php , в
в который после выбора другой даты должен вернуться результат работы php скрипта.
Вопрос в том: как можно вернуть результат работы test.php в div class=''choose_place" на странице index.php.
Сейчас возращается пустой test.php, дата в test.php передается, запрос в бд рабочий, во всяком случае если просто вписать вручную WHERE date.datetrip = '2017-06-11' он верно выполняется в PhpMyAdmin.
В чем может быть проблема?

laimas 14.11.2016 13:57

Цитата:

Сообщение от nina_
если просто вписать вручную WHERE date.datetrip = '2017-06-11' он верно выполняется в PhpMyAdmin

Это в РМА, а вот данные пришедшие извне так подставлять в запрос нельзя.

mysql_affected_rows - возвращает число затронутых прошлой операцией рядов, операциями INSERT, UPDATE, REPLACE, DELETE.

Число же рядов возвращенных операцией SELECT, это mysql_num_rows(). for($i=0; $i<$count;$i++) ... в общем то и не нужно, while($row = mysql_fetch_assoc($date_select)) ....

nina_ 14.11.2016 14:02

Упс, забыла главное: бд подключить.
Теперь если поставить в test.php
WHERE date.datetrip = '2017-06-11'
сработает, а с переменной (WHERE date.datetrip = '$date_trip') нет, хотя пара name: value передается.

laimas 14.11.2016 14:03

Цитата:

Сообщение от nina_
забыла главное

Главное, это безопасность кода, которой у вас и не пахнет, и сам код, ну мягко говоря, ужасен.

nina_ 14.11.2016 14:11

Согласна, но для меня главное сделать сначала мах упрощенно и понять суть как все вместе может работать, потренироваться так сказать.

laimas 14.11.2016 14:17

Это никак не оправдывает писать так код. Например, зачем в запросе INNER JOIN, разве нельзя сразу выбрать то, что удовлетворяет и дате, и typeplace?


Часовой пояс GMT +3, время: 02:51.