2017-10-16 92 views
0

解決此代碼,但找不到錯誤。 下面的代碼如下:將數據從PHP然後HTML然後jQuery然後回到PHP

$ _ POST從PHP填充屬性

<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> 

之後我打電話最終買-現在-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>"; 
+0

你應該檢查(和張貼)按鈕的HTML(由你的第一塊php呈現),並檢查(和張貼)你的ajax成功函數中res的值。您應該使用開發人員工具F12控制檯選項卡檢查javascript錯誤,並使用網絡選項卡檢查ajax帖子以及您發送/接收的數據。 – James

+0

@詹姆斯,我跟着控制檯和谷歌瀏覽器我可以看到,我的JavaScript中的所有變種都被填充,但當ajax調用所有var的重置爲null – Hazo

+0

只有當第一個if語句爲真,第二個if聲明我沒有得到這個問題,我得到我所有發佈的值到最後一個PHP文件 – Hazo

回答

3

簡短的回答是,你有錯字:

if(book === "chritmas"){

您在JavaScript代碼忘記字母s

其他的事情

您應該: 使用輸入類型隱藏取代屬性或將屬性替換爲數據城市,數據手冊

刪除屬性<a>按鈕

+0

雖然你是對的,並且我在我的代碼中修復了這個問題,但我仍然遇到同樣的問題 – Hazo

+0

嘗試使用console.log()在JavaScript中查找問題 – Rafael

0

看着你的代碼,它不會顯示你正在關閉按鈕標記。在月份屬性之後嘗試使用額外的>此片段。

<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輸出,看看他們是其他任何語法錯誤。

as rafael mentioned:data-field是命名標籤屬性的最佳實踐。

相關問題