Wordpress Ajax Форма CSV Запрос цены - PullRequest
0 голосов
/ 30 мая 2019

Я создаю форму калькулятора для карт, в которой вы можете выбрать тип карты и выбрать количество, и цена будет возвращена.

Я использую 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.

Спасибо.

1 Ответ

0 голосов
/ 30 мая 2019

Не возвращаться из ajax - выход.

Заменить return 'Price: £' . $rows[$quantity][$card];

с

wp_die('Price: £' . $rows[$quantity][$card]);

С наилучшими пожеланиями, Mitchell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...