Как получить значения ajax в переменные php и задать запросы sql?
В моем файле .phtml внутри тега скрипта есть код, подобный приведенному ниже
require(['jquery'], function($) {
var Calculation = function(evt) {
var width = jQuery('#width').val();
var height = jQuery('#height').val();
//Ajax
jQuery.ajax({
showLoader: true,
url: '<?php echo $this->getUrl('helloworld/index/ajax'); ?>',
data: ({
Width: width,
Height: height
}),
type: "POST",
dataType: 'json'
})
.error(function(err){
console.log(err);
})
.done(function(data) {
console.log(data.Width);
console.log(data.Height);
});
};
$('#width,#height').on('change', Calculation);
});
Вы можете видеть, что он вернет некоторую высоту и ширину
Как я могу использовать эти значения в sql-запросе
<?php
$sql = " SELECT price_component FROM base_price WHERE width="get width" AND height="get height" ";
?>
Как я могу это сделать
Как я могу получить эти ширину и высоту в php?
Я использовал приведенный ниже код
<?php
echo $_POST['Width'];
?>
Но это приведет к ошибке, такой как указание неопределенной ширины индекса
2 answers
Как вы уже упоминали, ваш ajax работает, и вы получаете значения, которые вам просто нужно обновить, вы можете использовать jQuery для его обновления.
В функции готово обновите ее
.done(function(data) {
jQuery('#width').val(data.Width);
jQuery('#height').val(data.Height);
});
Вы можете использовать какой-нибудь загрузчик при запуске ajax-запроса, чтобы пользователь понял, что что-то происходит.
Вы можете обновить значение в любом месте, где я предполагаю, что я показал выше. Вы можете обновить его в div или в любом разделе, где вы хотите его отобразить, используя jQuery.
Надежды это помогает ему.
Вы можете задать высоту и ширину в своем контроллере (helloworld/index/ajax
) следующим образом:
$post = $this->getRequest()->getPostValue();
И sql-запрос, подобный этому:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); // Instance of object manager
$resource = $objectManager->get('Magento\Framework\App\ResourceConnection');
$connection = $resource->getConnection();
$tableName = $resource->getTableName('employee'); //gives table name with prefix
//Select Data from table
$sql = "Select * FROM " . $tableName;
$result = $connection->fetchAll($sql); // gives associated array, table fields as key in array.