Передача входного значения нажатием кнопки в функцию php в скрипте - PullRequest
0 голосов
/ 01 октября 2019

Мне нужно использовать значение из поля ввода - без POST - для поиска из внешнего источника.

Поле ввода имеет связанную с ним кнопку, которая вызывает скрипт при нажатии кнопки. Поэтому мне нужно поместить поле ввода (id = 'lookup') в параметр функции (функция вызывается в скрипте).

Это строка кода в скрипте, которой нужно значение из поля ввода (поле ввода называется «поиск»)

<?php $product_name = api_request(lookup);?>

Мой код указан ниже.

(Примечание: я знаю о «PHP на стороне сервера, JS - это сайт клиента». Но нажатие кнопки вызывает вызов функции PHP, и код отображает возвращаемое значение функции, если вы сделаете это вместо этого:

<?php $product_name = api_request('1234');?>

, который возвратит «Имя моего продукта» через мою api_request() функцию.)

Что необходимо для помещения переменной сценария в параметр api_request()?

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

</head>
<body>
<p>Part Number = <input type="text" id="lookup" value= "12345"></p>
<button>Get product name for this part number</button>
<div id='product_name'>Product Name Goes Here </div>

<script>
$(document).ready(function(){
    $("button").click(function(){ 
        // returns value of input field 
        var lookup = document.getElementById('lookup'); 
        // need to put the input field 'lookup' into the function's parameter
        <?php $product_name = api_request(lookup);?>
        var product_name = "<?php echo $product_name; ?>";
    $('#product_name').text(product_name); // display it on the screen in that div ID

    });
});
</script>
</body>
</html>
<?php 

function api_request($partnumber) {
    // code that returns the product name for that part number, hard coded here
    $product_name = "My Product Name";
return $product_name;
}

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

ajax возможен.

попробуйте

создайте файл: api_request.php

<?php 
function api_request($partnumber) {
// code that returns the product name for that part number, hard coded here
$product_name = "My Product Name";
return $product_name;
}
$number = $_GET["part"];
$product_name = api_request($number);
echo json_encode(array( "product_name" => $product_name ));

и измените JavaScript с помощью этого

$(document).ready(function(){
$("button").click(function(){ 
    // returns value of input field 
    var lookup = document.getElementById('lookup'); 
    // need to put the input field 'lookup' into the function's parameter
    $.get(`api_request.php?part=${ lookup.value }`,(resp)=>{
$('#product_name').text(resp.product_name); // display it on the screen in that 
},"json");

});

});

0 голосов
/ 01 октября 2019

Поскольку вы уже понимаете, что PHP - это сервер, а JS - это клиент, вы не можете напрямую использовать переменные JS в PHP.

Есть два способа, которыми вы можете.

  1. $ _ POST, который вы уже сказали, что не хотите использовать. Я предполагаю, что причина не использования $ _POST в том, что браузер предлагает продолжить обновление страницы.

  2. Используйте $ _GET, который добавит параметр в ваш URL.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="get">
<p>Part Number = <input type="text" id="lookup" name="lookup" value= "12345"></p>
<button>Get product name for this part number</button>
</form>

Дополнительно добавьте эту небольшую строку в начало вашего файла, чтобы получить доступ к нему как к переменной PHP.

$lookup = $_GET["lookup"]; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...