Как передавать переменные PHP вместе с переменной Typeahead

avatar
Ricky T
7 апреля 2018 в 22:00
64
2
0

Я сократил это, чтобы сделать его максимально простым. Я создаю переменную typehead, которая отлично работает. но мне нужно передать две другие переменные $php_var1 и $php_var2, которые не связаны с типом. Переменные PHP определены в старт.php. Скрипт typeahead вызывает search_script.php, а затем вызывает cart.php. cart.php, где мне понадобятся две переменные PHP для быть переданы. Заранее спасибо за любую помощь

start.php

<?php
  $php_var1 = "my php variable 1";
  $php_var2 = "my php variable 2";
?>


<script>

$(document).ready(function() {

    var php_var1 = <?php echo $php_var1; ?>;
    var php_var2 = <?php echo $php_var2; ?>;


    $('#my_input').typeahead({
        source: function(query, result) {
            $.ajax({
                url: "search_script.php",
                method: "POST",
                data: {
                    query: query
                },
                dataType: "json",
                success: function(data) {
                    result($.map(data, function(item) {
                        return item;

                    }));
                }

            })
        },
        updater: function(item) {
            location.href = 'cart.php?shop_name=' + item
            return item
        }
    });

    });

</script>

<form action="cart.php" action="post">

<input type="text"  id="my_input" placeholder="Typeahead Search" />

</form>

search_script.php

<?php

$php_var1  = isset($_REQUEST['php_var1']) ? $_REQUEST['php_var1'] : "empty";
$php_var2  = isset($_REQUEST['php_var2']) ? $_REQUEST['php_var2'] : "empty";

$connect = mysqli_connect($servername, $username, $password, $dbname);
$request = mysqli_real_escape_string($connect, $_POST["query"]);
$query = " SELECT * FROM all_shops WHERE p_shop_name LIKE '%".$request."%'";

$result = mysqli_query($connect, $query);

$data = array();

if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result))
{
$data[] = $row["p_shop_name"];
}
echo json_encode($data);

}
?>

cart.php

$php_var1  = isset($_REQUEST['php_var1']) ? $_REQUEST['php_var1'] : "empty";
$php_var2  = isset($_REQUEST['php_var2']) ? $_REQUEST['php_var2'] : "empty";

echo $php_var1;
echo $php_var2;

?>
Источник
Mathieu de Lorimier
8 апреля 2018 в 01:32
0

Вы думали об использовании скрытых полей

Ricky T
8 апреля 2018 в 02:14
0

да, пробовал <input type="hidden" name="php_var1" />. Значение не проходит, я предполагаю, что оно не работает, поскольку тег <input, который я использую для ввода, не использует кнопку отправки

Ответы (2)

avatar
Ricky T
8 апреля 2018 в 17:12
0

Stackoverflow — отличный ресурс, но иногда вы не можете получить ответ, поэтому вам нужно проявлять настойчивость и продолжать попытки. Я работал над этим весь день вчера и просто не мог понять это. Проснулся этим утром, и это пришло ко мне. Ответ таков. В сценарии typeahead измените следующую строку

location.href = 'cart.php?shop_name=' + item      

до

location.href = 'cart.php?shop_name=' + item + '&php_var1=<?php echo $php_var1 ?>' + '&php_var2=<?php echo $php_var2 ?>'
avatar
charlietfl
7 апреля 2018 в 22:04
0

Вам нужны кавычки вокруг вывода php, чтобы генерировать строки javascript

var php_var1 = "<?php echo $php_var1; ?>";
var php_var2 = "<?php echo $php_var2; ?>";
Ricky T
7 апреля 2018 в 22:25
0

Это было бы здорово, так просто, но, к сожалению, все равно не сработало.

charlietfl
7 апреля 2018 в 22:27
0

какие ошибки возникают в консоли инструментов разработчика браузера?

Ricky T
7 апреля 2018 в 22:38
0

cart.php?shop_name=RCT Estate Sales:146 GET public_html/jquery-2.1.0.min.js net::ERR_ABORTED cart.php?shop_name=RCT Estate Sales:38 Uncaught TypeError: Не удается прочитать свойство 'firstChild' имеет значение null в cart.php?shop_name=RCT Estate Sales:38 at cart.php?shop_name=RCT Estate Sales:46 (анонимно) @ cart.php?shop_name=RCT Estate Sales:38 (анонимно) @cart. php?shop_name=RCT Estate Sales:46 cart.php?shop_name=RCT Estate Sales:146 GET public_html/jquery-2.1.0.min.js 404 () cart.php?shop_name=RCT Estate Sales :164 Uncaught TypeError:

Ricky T
7 апреля 2018 в 22:38
0

Невозможно установить нулевое значение свойства в showPosition (cart.php?shop_name=RCT Estate Sales:164)