将数据从PHP移动到HTML然后jQuery然后返回PHP

时间:2017-10-16 14:51:22

标签: javascript php jquery html ajax

使用此代码,但找不到有什么问题。 以下代码如下:

来自php填充属性的

$ _ POST

<button class="final-buy-now-btn" type="submit" 
book="<?php echo $_POST['book'];?>" 
productId="<?php echo $thisProductId?>" 
value="<?php echo $thisProductId ?>" 
<?php if($book === 'christmas'){ echo "country=\"".$thiscountry."\" "; 
echo "city=\"".$thiscity."\">";} ?> 
<?php if($book === 'birthday'){ echo "bday=\"".$bday."\" "; 
echo "month=\"".$month."\">";} ?> 

<a>Buy Now</a>
</button>

之后我打电话给final-buy-now-btn我希望这个错误,但是我找不到它:

$('.final-buy-now-btn').click(function(event){
        var book = $(this).attr("book");
        var productId = $(this).attr("productId");                      

        if( book === "christmas" ){
            var country = $(this).attr("country");
            var city = $(this).attr("city");
            $.ajax({
                type: 'POST',               
                url: '../../wp-admin/admin-ajax.php',
                data: { 'action' : 'add_item_meta_data_to_cart_item',
                    'book' : book, 'productId' : productId,
                    'country' : country,'city' : city},
                success: function (res) {
                    if (res) {
                        window.location = 'index.php/cart/';
                    }
                }
            })
        }
        if(book === "birthday"){
            var month = $(this).attr("month");
            var bday = $(this).attr("bday");
            $.ajax({
                type: 'POST',               
                url: '../../wp-admin/admin-ajax.php',
                data: {
                    'action' : 'add_item_meta_data_to_cart_item',
                    'book' : book,'productId' : productId,
                    'month' : month,'bday' : bday},
                success: function (res) {
                    if (res) {                      
                        window.location = 'index.php/cart/';
                    }
                }
            })
        }
    });

然后终于从被调用的动作,这是我的PHP函数, 对于生日,价值观正在返回,但圣诞节没有任何回报。

 function add_item_meta_data_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
    $item_meta_data = filter_input( INPUT_POST, 'item_meta_data' );
    $item_meta_data = json_decode($item_meta_data);

    echo "<pre>";
    print_r($item_meta_data);
    echo "</pre>";

2 个答案:

答案 0 :(得分:3)

简短的回答是你有拼写错误:

if( book === "chritmas" ){

您忘记了JavaScript代码中的字母

其他事情

你应该: 使用输入类型隐藏而不是属性或将属性替换为数据城市,数据手册

删除按钮

中的属性<a>

答案 1 :(得分:0)

查看您的代码,您似乎没有关闭按钮标记。尝试使用额外的&gt;这个片段月后物业。

<button class="final-buy-now-btn" type="submit" 
book="<?php echo $_POST['book'];?>" 
productId="<?php echo $thisProductId?>" 
value="<?php echo $thisProductId ?>" 
<?php if($book === 'christmas'){ echo "country=\"".$thiscountry."\" "; 
echo "city=\"".$thiscity."\">";} ?> 
<?php if($book === 'birthday'){ echo "bday=\"".$bday."\" "; 
echo "month=\"".$month."\">";} ?>> 

<a>Buy Now</a>
</button>

如果它仍无效,请运行https://validator.w3.org/页面查看html输出,看看它们是否是其他语法错误。

正如rafael所说:数据字段是在标签中命名属性的最佳实践。