2017-08-03 31 views
0

我有一個窗體與三選擇我打電話trhough阿賈克斯。 我將選擇值作爲字符串傳遞,然後使用php爆炸函數檢索兩個類別名稱以填充$ cate = $ _POST ['cat_prod']和id以處理和提取ajax產品。 我得到返回404頁面。 這裏是代碼WordPress的形式,提交選擇值作爲字符串

     <?php 
 
         global $wpdb; 
 
         $aCategoria = $wpdb->get_results("SELECT * FROM categorie"); 
 
         ?> 
 
         <select name="cat_prod[]" class="categorie"> 
 
          <option value="null">--SELEZIONA CATEGORIA--</option> 
 
          <?php 
 
          foreach ($aCategoria as $categoria) { 
 
           ?> 
 
           <option value="<?php $opt = array($categoria->id_cat, $categoria->categoria); echo $opt[1]."/".$opt[0]; ?>"><?php echo $categoria->categoria; ?></option> 
 
           <?php 
 
          } 
 
          ?> 
 
         </select>

使AJAX調用我用下面的腳本

\t var ajaxurl = '<?php echo admin_url("admin-ajax.php"); ?>'; 
 
     
 
     // prodotti 
 
\t jQuery(function($) { 
 
\t \t $('body').on('change', '.categorie', function() {      
 
\t \t \t var categorie = $(this).val();console.log(categorie); 
 
\t \t \t if(categorie != "") {      
 
\t \t \t \t var data = { 
 
\t \t \t \t \t action: 'get_prodotti_by_ajax', 
 
\t \t \t \t \t categorie: categorie, 
 
             security: '<?php echo wp_create_nonce('get_prodotti'); ?>' 
 
\t \t \t } 
 

 
\t \t \t \t $.post(ajaxurl, data, function(response) { 
 
\t \t \t \t \t $('.load-prodotti').html(response); 
 
\t \t \t }); 
 
\t \t \t } 
 
\t \t }); 
 
\t });

,並獲得其他選擇以下功能到的functions.php (wordpress)

add_action('wp_ajax_get_prodotti_by_ajax', 'get_prodotti_by_ajax_callback'); 
 
add_action('wp_ajax_nopriv_get_prodotti_by_ajax', 'get_prodotti_by_ajax_callback'); 
 
function get_prodotti_by_ajax_callback() { 
 
     check_ajax_referer('get_prodotti', 'security'); 
 
\t $cate = $_POST['categorie']; 
 
     
 
     // inizio 
 
     
 
     $idc = explode("/", $cate); 
 
     $idcate = $idc[1]; 
 
     
 
     // fine 
 
     
 
\t global $wpdb; 
 
\t $aProdotti = $wpdb->get_results($wpdb->prepare("SELECT * FROM prodotti WHERE id_categoria = '$idcate' ")); 
 
\t if ($aProdotti) { 
 
\t \t ?> 
 
       <select class="prodotti" name="prodotti[]" style="width: 100%"> 
 
        <option value="null">seleziona prodotto</option> 
 
\t \t \t <?php 
 
\t \t \t foreach ($aProdotti as $prod) { 
 
\t \t \t \t ?> 
 
\t \t \t \t <option value="<?php $opt=array($prod->id, $prod->prodotto); echo $opt[1]."/".$opt[0]; ?>"><?php echo $prod->prodotto; ?></option> 
 
\t \t \t \t <?php 
 
\t \t \t } 
 
\t \t \t ?> 
 
\t \t </select> 
 
\t \t <?php 
 
\t } 
 
\t wp_die(); 
 
}

我必須說,所有的Ajax工作正常,但是當我提交表單,我得到的404錯誤頁面。 我在做什麼錯?

這是總的形式

<form method='post' action="<?php the_permalink(); ?>"> 
 
       <table id="tab_prev"> 
 
        <tbody> 
 
        <tr> 
 
        <th style="width: 26px;"><input class='check_all' type='checkbox' onclick="select_all()"/></th> 
 
        <th>No</th> 
 
        <th>Categoria</th> 
 
        <th style="width: 120px">Prodotto</th> 
 
        <th style="width: 120px">Misura-Kg/ml</th> 
 
        <th>Quantità</th> 
 
        <th>Lungh. mm</th> 
 
        <th>Tot/mt</th> 
 
        <th>Tot/kg</th> 
 
        <th>kg/mt</th> 
 
        <th>Val €</th> 
 
        <th>Tot €uro</th> 
 
        </tr> 
 
        <tr> 
 
        <td><input type='checkbox' class='case'/></td> 
 
        <td>1.</td> 
 
        <td> 
 
         <?php 
 
         global $wpdb; 
 
//      $aCategoria = $wpdb->get_results("SELECT id_cat, categoria FROM categorie"); 
 
         $aCategoria = $wpdb->get_results("SELECT * FROM categorie"); 
 
         ?> 
 
         <select name="cat_prod[]" class="categorie"> 
 
          <option value="null">--SELEZIONA CATEGORIA--</option> 
 
          <?php 
 
          foreach ($aCategoria as $categoria) { 
 
           ?> 
 
           <option value="<?php $opt = array($categoria->id_cat, $categoria->categoria); echo $opt[1]."/".$opt[0]; ?>"><?php echo $categoria->categoria; ?></option> 
 
           <?php 
 
          } 
 
          ?> 
 
         </select> 
 
         
 

 
        </td> 
 
        <td class="load-prodotti"><select disabled="disabled" style="width: 100%;"><option>--seleziona</option></select></td> 
 
        <td class="load-misure"><select disabled="disabled"><option>--seleziona</option></select></td> 
 
        <input type="hidden" name="pesi[]" id="kg" class="load-peso" > 
 
        <td><input type="number" id="q" name="quantita[]" min="1" placeholder="quantit&agrave;"></td> 
 
        <td><input type="number" id="l" name="lunghezza[]" min="1"step="1" pattern="[0-9]" placeholder="lunghezza"></td> 
 
        <td><input type='number' class='total_mt' name='total_mt[]' placeholder="0,00" data-ac="(#q*#l/1000)" readonly/></td> 
 
        <td><input type="number" class='total_kg' name="total_kg[]" placeholder="0,00" data-ac="(#kg*#q*#l/1000)" readonly/></td> 
 
        <td><select name="calcolo[]" id="calcolo" onchange="condition()" style="width: 80px"> 
 
          <option value="null">--</option> 
 
          <option value="0" >€/Kg</option> 
 
          <option value="1">€/Mt</option> 
 
         </select> 
 
        </td> 
 
        <td><input type="number" name="quotazione[]" step="0.001" id="e" min=0 placeholder="0,00"></td> 
 
        <td id="valore_tot"><input type="number" placeholder="0,00" readonly style="background-color: rgba(0,0,0,0.1);"></td> 
 
        </tr> 
 
        </tbody> 
 
       </table> 
 
       <p> 
 
       <button type="button" class='delete' title="Rimuovi"><i class="fa fa-trash-o" aria-hidden="true"></i></button> 
 
       <button type="button" class='addmore' title="Aggiungi"><i class="fa fa-plus" aria-hidden="true"></i></button> 
 
       </p> 
 
       <textarea placeholder="Messaggio" rows="5" cols="150" name="messaggio"></textarea> 
 
       <p> 
 
        <label style="width:100px;">Totale Kg </label><input type="number" id="tot_kg_gross" name="tot_kg_gross" readonly> 
 
       </p> 
 
       <p> 
 
        <label style="width:100px;">Totale € </label><input type="number" id="tot_eur_gross" name="tot_eur_gross" readonly> 
 
       </p> 
 
       <p> 
 
        <input type="reset" value="Annulla" style="width:80px;"><input type='submit' name='invia' value='Invia' class='but' style="width:80px;margin-left: 10px;"/> 
 
       </p> 
 
      </form>

+0

哪裏是你的形式? – vel

+0

是ajaxurl變量的工作? – Stender

+0

是的,ajax工作正常,當我做第一次選擇,然後啓用sencond,然後啓用 – ross80

回答

0

只是試試這個。

function get_prodotti_by_ajax() { 
    check_ajax_referer('get_prodotti', 'security'); 
    $cate = $_POST['categorie']; 

     // inizio 

     $idc = explode("/", $cate); 
     $idcate = $idc[1]; 

     // fine 

    global $wpdb; 
    $aProdotti = $wpdb->get_results($wpdb->prepare("SELECT * FROM prodotti WHERE id_categoria = '$idcate' ")); 
    if ($aProdotti) { 
     ?> 
       <select class="prodotti" name="prodotti[]" style="width: 100%"> 
        <option value="null">seleziona prodotto</option> 
      <?php 
      foreach ($aProdotti as $prod) { 
       ?> 
       <option value="<?php $opt=array($prod->id, $prod->prodotto); echo $opt[1]."/".$opt[0]; ?>"><?php echo $prod->prodotto; ?></option> 
       <?php 
      } 
      ?> 
     </select> 
     <?php 
    } 
    wp_die(); 
} 
add_action('wp_ajax_get_prodotti_by_ajax', 'get_prodotti_by_ajax'); 
add_action('wp_ajax_nopriv_get_prodotti_by_ajax', 'get_prodotti_by_ajax'); 

這裏是VAR ajaxurl

\t var ajaxurl = '<?php echo admin_url("admin-ajax.php"); ?>'; 
 
     
 
     // prodotti 
 
\t jQuery(function($) { 
 
\t \t $('body').on('change', '.categorie', function() {      
 
\t \t \t var categorie = $(this).val();console.log(categorie); 
 
\t \t \t if(categorie != "") {      
 
\t \t \t \t var data = { 
 
\t \t \t \t \t action: 'get_prodotti_by_ajax', 
 
\t \t \t \t \t categorie: categorie, 
 
             security: '<?php echo wp_create_nonce('get_prodotti'); ?>' 
 
\t \t \t } 
 

 
\t \t \t \t $.post(ajaxurl, data, function(response) { 
 
\t \t \t \t \t $('.load-prodotti').html(response); 
 
\t \t \t }); 
 
\t \t \t } 
 
\t \t }); 
 
\t });

這裏附截圖 enter image description here

+0

不幸的是,它不工作,仍然得到404錯誤頁面 – ross80

+0

其工作對我 – vel

+0

你能分享我的'var ajaxurl'? – vel

相關問題