2017-10-16 6 views
0

に戻りますが、間違っている箇所は見つかりません。次のように 次のコードは次のとおりです。PHPの充填からPHPからHTML、jQueryの順に移動してから、

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

その後、私はエラーをすることを期待するが、私は見つけるcouldntのどの最終購入-今-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のすべてのvarが満たされていることがわかりますが、すべてのvarのnullをリセットするには、AJAXを参照してくださいすることができます – Hazo

+0

場合にのみ最初のif文がtrueの場合、私はこの問題を取得していないと私は最後のPHPファイル – Hazo

答えて

3

短い答えは、あなたがタイプミスを持っているということです。

if(book === "chritmas"){

あなたがJavaScriptコードにあなたがすべき

他のもの

手紙のを忘れてしまった:隠された入力タイプを使用して を属性の代わりに、または属性をデータ都市に置き換える、データブック

属性を削除するボタン内

+0

あなたは正しいですが、私は自分のコードで修正しましたが、私はまだ同じ問題があります – Hazo

+0

JavaScriptで問題を見つけるためにconsole.log()を使ってみてください – 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> 

は、html出力を見て、彼らは他の構文エラーがあるかどうかを確認するためにhttps://validator.w3.org/てページを実行します。

上記のように、data-fieldはタグ内のプロパティの命名のベストプラクティスです。

関連する問題