Принимать GET-параметры и делать Ajax-запрос

211
08 июля 2017, 10:47

У меня есть файл conrete.php, в котором, в зависимости от выбранного <option>, выводятся соответствующие данные по Ajax-запросу (отдельный скрипт).

Возможно ли сделать так, чтобы concrete.php мог принимать GET-параметры и выводить соответствующие данные, не используя <form> и не перезагружая страницу?

К примеру, мой Ajax-запрос принимает один параметр - id. Как я могу сделать запрос с этим параметром, введя в адресной строке concrete.php?id=2?

Примечание: В случае, если выбрал <option>, то добавлять к текущему URL параметры.

/**
 * concrete.php file
 */
<div class="col-xs-6 col-xs-offset-3 select">
    <select class="form-control">'
        <option selected value="default">Выберите событие</option>
        <?outputEventData("event");?> // вывод <option>-ов
    </select>
</div>
<div class="col-xs-10 col-xs-offset-1 danger-events"></div> // сюда выгружаются ajax-данные
<script>
$('select.form-control').on('change', function() {
    var id = $('.form-control option:selected').val();
    if(id !== 'default') {
        $.ajax({
            type: "GET",
            url: "getData.php",
            data: {id: id},
            success: function(data) {
                $('.danger-events').html(data);
            }
        });
    } 
});
</script>
/**
 * getData.php file
 */
<?php
header('Content-Type: text/html; charset=utf-8');
if(isset($_GET['id'])) {
    echo someData;
}
Answer 1

В теории должно работать как-то так:

/**
 * concrete.php file
 */
...
<div class="col-xs-10 col-xs-offset-1 danger-events">
    <?php
        if(isset($_GET['id'])) {
            include('getData.php?inline=1&id='.$_GET['id']);
        }
    ?>
</div>
<script>
$('select.form-control').on('change', function() {
    var id = $('.form-control option:selected').val();
    history.pushState({id: id}, "", "concrete.php?id=" + id);
...
/**
 * getData.php file
 */
<?php
if(!isset($_GET['inline'])) {
    header('Content-Type: text/html; charset=utf-8');
}

if(isset($_GET['id'])) {
    echo someData;
}
READ ALSO
Интерфейсы в ООП (Java), по-простому?

Интерфейсы в ООП (Java), по-простому?

Объясните по-простому, на пальцах, зачем и для чего нужны интерфейсы (Java)? Все эти заумные книжные определения и формулировки, ясности совсем...

310
Загрузка нескольких фотографий сразу

Загрузка нескольких фотографий сразу

Есть функция создания объявления, с возможностью загружать одну фотографиюНе могу переделать таким образом, чтобы можно было загружать...

266
дополнять значение в бд mysql+php

дополнять значение в бд mysql+php

я хочу чтобы в поле results с каждым запросом дополнялось значение, а не обновлялосьну сохранить результаты теста

203
Обход Singleton с помощью Reflection Api

Обход Singleton с помощью Reflection Api

Нашел способ обхода стандартной реализации паттена Singletion с помощью php Reflection Api

199