2017-10-28 1 views
0

Ich habe eine AJAX-Form, die Beiträge basierend auf der Kategorie filtert. Setup:Sende PHP-Wert mit jQuery AJAX-Funktion zu PHP-Funktion

  1. HTML-Formular
  2. PHP-Funktion echo ouput
  3. jQuery Ajax-Request php Funktion

Frage zu laden: Wie kann ich einen Wert in die PHP-Funktion analysieren ($ Test, siehe unten) aus der jQuery Ajax-Funktion?

Form - Ausgänge html Auswahlfeld und Schaltfläche Beiträge filtern

<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter"> 
    <?php 
     if($terms = get_terms('category', 'orderby=name')) : // to make it simple I use default categories 
      echo '<select name="categoryfilter"><option>Select category...</option>'; 
      foreach ($terms as $term) : 
       echo '<option value="' . $term->term_id . '">' . $term->name . '</option>'; // ID of the category as the value of an option 
      endforeach; 
      echo '</select>'; 
     endif; 
    ?> 
     <button>Apply filter</button> 
    <input type="hidden" name="action" value="myfilter"> 
</form> 
<div id="response"></div> 

PHP-Funktion - Ausgänge führen auf Tastenklick in HTML-Formular

function misha_filter_function($test){ 

// Do something with $test, but how to parse it with jQuery into this php function?  

$args = array(
      'orderby' => 'date', // we will sort posts by date 
      'order' => $_POST['date'] // ASC или DESC 
     ); 

     // for taxonomies/categories 
     if(isset($_POST['categoryfilter'])) 
      $args['tax_query'] = array(
       array(
        'taxonomy' => 'category', 
        'field' => 'id', 
        'terms' => $_POST['categoryfilter'] 
       ) 
      ); 

     $query = new WP_Query($args); 

     if($query->have_posts()) : 
      while($query->have_posts()): $query->the_post(); 
       echo '<h2>' . $query->post->post_title . '</h2>'; 
      endwhile; 
      wp_reset_postdata(); 
     else : 
      echo 'No posts found'; 
     endif; 

     die(); 
    } 


    add_action('wp_ajax_myfilter', 'misha_filter_function'); 
    add_action('wp_ajax_nopriv_myfilter', 'misha_filter_function'); 

jQuery - Frage: Wie php value $ test auf die obige PHP-Funktion zu parsen?

jQuery(function($){ 
    $('#filter').submit(function(){ 
     var filter = $('#filter'); 
     $.ajax({ 
      url:filter.attr('action'), 
      data:filter.serialize(), // form data 
      type:filter.attr('method'), // POST 
      beforeSend:function(xhr){ 
       filter.find('button').text('Processing...'); // changing the button label 
      }, 
      success:function(data){ 
       filter.find('button').text('Apply filter'); // changing the button label back 
       $('#response').html(data); // insert data 
      } 
     }); 
     return false; 
    }); 
}); 

Antwort

0

Sie serialisiert Daten so accesed von:

parse_str($_POST['data'], $inputValues); //$inputValues will be array with your form fields

+0

Dank. Kannst du mir ein wenig helfen, indem ich meinen Code benutze/verändere? – Bob

+0

Nur Code neu schreiben, um $ inputValues ​​zu verwenden: '$ inputValues ​​= array(); parse_str ($ _ POST ['Daten'], $ inputValues); if (isset ($ inputValues ​​['categoryfilter'])) ' –

+0

Ok und wie kann ich den Wert mit jQuery an die PHP-Funktion senden? Also, wie ändert man die jQuery-Funktion, dass es die Daten sendet? – Bob