Я создаю форму калькулятора для карт, в которой вы можете выбрать тип карты и выбрать количество, и цена будет возвращена.
Я использую CSV-файл для оценки, и у меня все это работает отлично.в виде простой HTML-формы, отображаемой через шорткод в WordPress.
<?php
// Get CSV
$ch = fopen($standard_csv, "r");
$header_row = fgetcsv($ch);
// Get array of rows
$rows = array_map('str_getcsv', file($standard_csv));
// Remove first row (header row) as we already have this separately
unset( $rows[0] );
?>
<!-- The Form -->
<form action="" method="post" name="calc" id="calc">
Type:
<select name="card" id="card">
<option value="">Please Select</option>
<?php
// Remove first blank cell from $header
unset( $header_row[0] );
foreach ( $header_row as $key => $card ){
echo '<option value="' . $key . '">' . $card . '</option>';
}
?>
</select>
Quantity:
<select name="quantity" id="quantity">
<option value="">Please Select</option>
<?php
foreach ( $rows as $key => $row ){
echo '<option value="' . $key . '">' . $row[0] . '</option>';
}
?>
</select>
<input type="submit" name="get-price" value="Get Price!">
</form>
<?php
if ( isset( $_POST['get-price'] ) ){
$card = $_POST['card'];
$quantity = $_POST['quantity'];
echo 'Price: £' . $rows[$quantity][$card];
}
?>
Это здорово, но я хочу отобразить возвращенную цену с помощью AJAX, поэтому мне не нужно обновлять страницу, когда пользователь запрашивает цену дляих выбранная карта и количество.
Мои сценарии поставлены в очередь следующим образом:
wp_enqueue_script( 'custom_script', plugin_dir_url( __FILE__ ) . 'js/custom.js', array('jquery'), '1.0' );
wp_localize_script( 'custom_script-script', 'ajax_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ),
add_action('wp_ajax_get_price', 'get_price');
add_action('wp_ajax_nopriv_get_price', 'get_price');
function get_price(){
$card = $_POST['card'];
$quantity = $_POST['quantity'];
return 'Price: £' . $rows[$quantity][$card];
}
У меня есть это в моем файле Javascript
$('#calc').submit(function (event) {
event.preventDefault();
var card = jQuery('#card').val();
var quantity = jQuery('#quantity').val();
jQuery.ajax({
type: 'POST',
url: ajax_object.ajax_url,
data: {
action: 'get_price',
card: card,
quantity: quantity
},
success: function (data) {
console.log(data);
},
error: function (errorThrown) {
console.log(data);
alert(errorThrown);
}
});
});
Я полностью запуталсяи я пытался следовать многим учебным пособиям, но я просто не могу выработать правильную логику, чтобы иметь возможность выводить цену из файла CSV с использованием AJAX без перезагрузки страницы.
Я знаю, что этот код совершенно не верен, но, пожалуйста, любая помощь, чтобы установить меня в правильном направлении, была бы чрезвычайно признательна.
Мне просто нужна помощь в понимании логики передачи переменных и цен между функцией ajax и php для возврата цены из файла CSV.
Спасибо.