通过jQuery AJAX和keyup事件搜索特定术语

时间:2013-11-22 13:07:41

标签: javascript php jquery html ajax

我正在尝试在我的网站上建立一个优惠券系统,我想为此使用jQuery AJAX。

所以我是怎么做的......

我在 coupon.php 中有一个数组,其中包含以下数据:

Array
(
    [admins] => 50
    [helpers] => 20
)

管理员是优惠券, 50 是用户将获得的促销。提交html表单的用户当然需要输入优惠券名称。

这就是我的jQuery的样子:

$(function() {
    var ilength = 3;

    var price_class = document.getElementsByClassName('price_no');
    var price_no = parseFloat(price_float[0].innerHTML);

    $('#coupon_entry').keyup(function() {
        var that = this,
        value = $(this).val();

        if (value.length >= ilength)
        {
            $.ajax({
                url: 'coupon.php',
                type: 'POST',
                data: {'coupon': value},
                dataType: 'html',

                success: function(result) {
                    if (result != 0)
                    {
                        $('.price_no').text(result / 100 * price_no);
                    }
                }
            });
        }
    });
});

这就是 .price_no 在HTML中的样子:

<span class="price">Total: <strong><span class="price_no">28.9</span> USD</strong></span>

这就是我在PHP中处理整个事情的方式:

$coupon_post     = $_POST['coupon'];
$coupons_str_ary = explode(';', $config['mp_coupons']);
$coupons_array   = array();

foreach ($coupons_str_ary as $coupon)
{
    $coupon_percentage = substr(strrchr($coupon, '='), 1);  
    $coupon_name = $market->reverse_strrchr($coupon, '=', 0);

    $coupons_array[$coupon_name] = $coupon_percentage;
}

unset($coupons_array[0]);
echo (array_key_exists($coupon_post, $coupons_array)) ? (float) $coupons_array[$coupon_post] : 0;
?>

这个PHP脚本有我上面发布的那个数组,然后我使用用户的输入来调用数组的键,然后返回消息(echo)用于获得优惠券的新销售价格使用。


问题

我上面描述的任何内容都没有用 - 数字根本没有变化。

P.S:我还使用了jQuery text()方法。但是.price_no总会变成/返回NaN,然后我切换到经典的Javascript来获取类名。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

var price_class = document.getElementsByClassName('price_no');
var price_no = parseFloat(price_float[0].innerHTML); //error is here

我认为您必须将price_float [0]更改为price_class [0]

答案 1 :(得分:1)

更改您的代码执行此操作

var price_class = document.getElementsByClassName('price_no');
 //variable name is price_class not price_float
var price_no = parseFloat(price_class[0].innerHTML);