【问题标题】:Wordpress Ajax Form CSV Price RequestWordpress Ajax 表单 CSV 价格请求
【发布时间】: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


    【解决方案1】:

    不要从 ajax 返回 - 退出。

    替换return 'Price: £' . $rows[$quantity][$card];

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

    最好的祝愿, 米切尔

    【讨论】:

    • 您好,米切尔,感谢您的热心协助。我试过了,我有进步!但是在我的成功功能中,我正在控制台记录数据,console.log(data);但它出于某种原因在控制台中记录了整个 HTML 页面?
    • 1) 请接受答案。 2) 我不确定为什么 console.log(data) 会显示除返回值之外的任何内容。
    • 我会接受答案,因为你让我朝着正确的方向前进,米切尔,所以感谢你抽出宝贵的时间,这意味着很多。我现在已经想通了,一切正常了:)
    • 谢谢。我希望我理解 console.log() 问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2021-12-13
    • 1970-01-01
    • 2015-05-24
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多