Как сделать автоматическое обновление выпадающего меню (с помощью jQuery) после успешной загрузки формы (с помощью ajax) - PullRequest
0 голосов
/ 03 октября 2018

У меня есть 2 формы:

Form 1 -> create strategy
Form 2 -> create project

Форма 2 использует данные, которые загружаются в базу данных с помощью формы 1.

Форма 1 правильно загружает базу данных.

В форме 2 отображаются все стратегии, уже имеющиеся в базе данных.

Что не работает (пока):

Когда я создаю стратегию и загружаю ее в базу данных с помощью формы 1, стратегия недоступна в раскрывающемся меню вформа 2. Мне нужно перезагрузить страницу, чтобы увидеть ее.

В настоящее время форма 1 и форма 2 используют AJAX для загрузки и отображения всех данных.

Сначала я использовал $(document).ready(function(){...}.Этот метод был неправильным, так как я загружал раскрывающийся список с момента загрузки документа (и, следовательно, до загрузки формы).

Я пытался со следующим утверждением $(document).click(function){...}, но у меня та же проблема.

Я также пытался поместить jQuery в отдельный скрипт (так как у меня есть несколько скриптов jQuery под $(document).click(function(){...}, но проблема та же.

Вот фрагмент кода jQuery:

$(document).click(function(){
    $("select#newProjectMarketStrategy").change(function(){
        var selectedMarketStrategy = $("#newProjectMarketStrategy option:selected").val()
        $.ajax({
            type: 'POST',
            url: './php/returnStrategy.php',
            data: {marketStrategy:selectedMarketStrategy}
        )}.done(function(data){
            $("#marketStrategyId").html(data);
        });
    });
});

Я не знаю, могу ли я обновить раскрывающийся список после того, как форма была загружена в базу данных без перезагрузки страницы.

В текущем коде отображается запись, уже имеющаяся в базе данных.Единственная проблема, когда я загружаю новые данные в базу данных на основе формы 1,

HTML разметка:

<form>
     <select id="newProjectMarketStrategy" required>
          <option value="">Select Market Strategy</option>
          <?php foreach ($marketStrategy=marketStrategy() as $key => $value) {echo $marketStrategy[$key];} ?>
     </select>
</form>

PHP код:

<?php   // RETURN COUNTRY BASED ON REGION SELECTED
echo "<select id=\"newStrategyCountryId\">";
echo "<option value=\"N/A\">Not Applicable</option>\n";
if (ISSET($_POST["marketStrategy"])) {
    $marketStrategy = $_POST["marketStrategy"];
    if (($marketStrategy != '') || ($marketStrategy != 'N/A')) {
        $bdd = new PDO('mysql:host=localhost;dbname=workplan;charset=utf8', 'root','');
        $region_market_strategy=$bdd->query("SELECT * FROM market_strategy WHERE market_strategy_id ='" . $marketStrategy . "'");
        while ($data = $region_market_strategy->fetch()) {
            $var=$data['strategy_id'];}
        $dbextract=$bdd->query("SELECT * FROM strategy WHERE strategy_id = '". $var . "'");
        while ($data = $dbextract -> fetch()) {
            if ($data['strategy_id'] == $var) {
            echo "<option value=\"" . $data['strategy_id'] ."\" selected>" . $data['strategy'] . "</option>\n";
            } else{echo "<option value=\"" . $data['strategy_id'] ."\">" . $data['strategy'] . "</option>\n";}
        }
    }
}
echo "</select>";
?>
...