2016-07-10 23 views
0

Ich erstelle ein WordPress-Plugin, das alle Schulen bekommt und 3 davon in einer Rangliste auswählt. Also versuche ich alle post_ids aus einer Gruppe von Checkboxen mit jquery zu bekommen und poste sie für meine php Funktion. Von meinem Code unten, wie soll ich das machen?Wordpress mit jquery füge Elemente zu einem Array hinzu und poste es für php

Hier ist mein HTML und PHP-Code:

<?php foreach ($all_schools as $data):?>    
<div class="rank_box"> 
    <div class="left">           
     <div class="checkbox"> 
      <label class="pull-left"><input type="checkbox" name="nationality" value="<?php echo $data->post_id; ?>"></label> 
     </div> 
    </div> 
    <div class="right"> 
     <p><?php 
       if(strlen($data->school_name) >= 30){ 
        echo substr($data->school_name,0,30)."…"; 
       }else{ 
        echo $data->school_name; 
       } 
      ?><br>     
     </p> 
    </div> 
</div> 

<?php endforeach;?> 

<div id="divnationality"> 
</div> 

Und mein jquery:

$(document).ready(function(){ 
    $('input[name="nationality"]').click(function() {    
      getSelectedBoxes('nationality'); 
    }); 

    var getSelectedBoxes = function (groupName) { 
     var result = $('input[name="' + groupName + '"]:checked'); 
     if (result.length > 0) { 
      var resultString = result.length + " checkboxe(s) checked<br/>"; 
      result.each(function() { 
       resultString += $(this).val() + "<br/>"; 
      }); 
      $('#div' + groupName).html(resultString); 
     } 
     else { 
      $('#div' + groupName).html("No checkbox checked"); 
     } 
    }; 
}); 

Antwort

0

Innerhalb der .click Funktion, würde ich nur tun:

var is_checked = $(this).prop("checked");

if (is_checked) ...

$(this).val() sollte auch den Eingabewert erhalten, unabhängig davon, ob es aktiviert ist oder nicht.

Um die Wertdaten zu PHP zu veröffentlichen, verwenden $.ajax() (more info here) wie folgt aus:

var post_data = {}; 

if (is_checked) { 
    var value = $(this).val(); 
    post_data[value] = value; 
} 

$.ajax({ 
    url: 'YOUR_POST_URL', 
    type: 'POST', 
    data: post_data, 
    error: function(jqXHR, textStatus, errorThrown) { 
     alert(errorThrown); 
    }, 
    success: function(data) { 

    } 
}); 
+0

Vielen Dank für Ihre schnelle Antwort @ Matt ... Ich werde meinen Code mit Ihrem Vorschlag überarbeiten, aber was ich will wissen, ist, wie man die post_ids mit jquery zu einem Array hinzufügt und es postet, damit ich das Array mit meiner php-Funktion benutzen kann. –

+0

Meine Antwort aktualisiert, um die Postleitzahl zu enthalten. – Matt

+0

Danke matt. Ich habe deinen Code funktioniert. Aber ich behielt meine getSelectedBoxes Funktion für zukünftigen Gebrauch noch. Also habe ich einen Alarm ("Erfolg") innerhalb der Funktion (Daten) hinzugefügt und ich schätze, dass es jetzt funktioniert. Mein letztes Problem ist, wie kann ich die geposteten Daten von meiner PHP-Funktion abziehen? –