【发布时间】:2019-05-30 15:58:37
【问题描述】:
我正在创建一个卡片计算器表单,您可以在其中选择卡片类型并选择数量并返回价格。
我正在使用 csv 文件进行定价,并且一切正常。作为通过 WordPress 中的短代码显示的简单 HTML 表单。
<?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);
}
});
});
我自己完全搞糊涂了,我尝试过很多教程,但我无法找出正确的逻辑,以便能够在不重新加载页面的情况下使用 AJAX 从 CSV 文件中输出价格。
我知道这段代码是完全不正确的,但请任何帮助我朝着正确的方向前进,我们将不胜感激。
我只需要帮助理解如何处理在 ajax 和 php 函数之间传递变量和价格的逻辑,以便从 CSV 文件返回价格。
谢谢。
【问题讨论】:
标签: javascript php ajax wordpress csv