2016-04-22 12 views
0

Ich habe ein einfaches HTML-Formular Kontrollkästchen mit:Passing Mehrere Check-Box Werte

<form action="demo_form.asp"> 
    <input type="checkbox" name="test[]" value="t1"> 
    <input type="checkbox" name="test[]" value="t2"> 
    <input type="checkbox" name="test[]" value="t3"> 
    <input type="submit" value="Submit"> 
</form> 

Derzeit, wenn ich mehrere Kontrollkästchen und klicken Sie auf Absenden, die Server-Seite wird ein Array wie folgt:

[t1,t2,t3] 

Aber ich möchte der Server für jedes Kontrollkästchen POST. Zum Beispiel, wenn ich alle 3 Kästchen aktiviert habe, möchte ich, dass der Server "Wert = t1" sendet und dann erneut für "Wert = t2" und so weiter und so weiter. Irgendwelche Ideen?

+0

so Sie ' ["Wert = t1", "Wert = t2", "Wert = t3"] '? –

+0

Warum müssen Sie für jedes Kontrollkästchen posten, wenn Sie das Formular absenden. –

+0

Nein Ich möchte 3 separate Zeiten für jede Checkbox POST. Es wäre also so, als würde man das erste Kästchen ankreuzen und auf Senden klicken, dann das zweite Kästchen ankreuzen und auf Senden klicken und dann das dritte Kästchen markieren und auf Senden klicken. – anderish

Antwort

0

Sie erhalten test[]=t1&test[]=t2&test[]=t3 im rohen Postkörper. PHP verarbeitet es einfach zu einem Array, weil Sie [] im Namen haben.

Wenn Sie kein Array möchten, verwenden Sie nicht die []. Sie erhalten einen rohen Post von test=t1&test=t2&test=t3, aber $_POST['test'] enthält ONLYt3, weil das der LAST-Wert im Post-Body für diesen bestimmten Schlüsselnamen sein wird.

+1

ah ja. wahr genug. Aber so oder so, wenn man '[] 'in den Feldnamen setzt, erstellt php ein Array von Werten, egal ob es sich um Post oder Get handelt. –

+0

JA Sie haben Recht –

+0

'Nein Ich möchte 3 separate Zeiten für jede Checkbox POST. Es wäre also so, als würde man das erste Kästchen ankreuzen und auf Senden klicken, dann das zweite Kästchen ankreuzen und auf Senden klicken und dann das dritte Kästchen markieren und auf Senden klicken. das ist was er will. –

0

Sie brauchen eine neue Funktion zum Beispiel erstellen

myArray = [t1,t2,t3]; 
for (var j in myArray){ 
    dynamicPost() 
} 

function dynamicPost(val){ 
$.ajax({ 
    type: "POST", 
    url: url+val, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 
} 

auf diese Weise Sie für jeden Wert einen neuen Beitrag erstellen. Ich werde es funktioniert, oder wenn Sie das Array in Ihrem Backend erhalten, ist die gleiche procees Sie für eine erstellen müssen und Ihren Prozess für jeden Wert machen, wenn ich mehr Informationen habe, werde ich Ihnen helfen, mehr

0
<form action="demo_form.asp"> 
<input type="checkbox" name="value1" value="t1"> 
<input type="checkbox" name="value2" value="t2"> 
<input type="checkbox" name="value3" value="t3"> 
<input type="submit" value="Submit"> 

Versuchen Sie es mit verschiedenen Namen für jedes Kontrollkästchen

+0

Es scheint, dass er jede Aktion auf ein Kontrollkästchen in einer separaten HTTP-Anfrage senden will. –

0

Es scheint, was Sie versuchen zu erreichen kann nicht in PHP nur getan werden, aber mit Hilfe von einigen Javascript Magie, die für Check/Uncheck Ereignis jedes Ihrer Kontrollkästchen zu hören und dann senden Ajax-Anfrage. Hier ist, wie kann dies tun:

Ändern Sie die Checkbox Namen und machen sie einzigartig mit einer gemeinsamen Klasse:

<form action="demo_form.asp"> 
    <input type="checkbox" name="test1" value="t1" class="checkIt"> 
    <input type="checkbox" name="test2" value="t2" class="checkIt"> 
    <input type="checkbox" name="test3" value="t3" class="checkIt"> 
    <input type="submit" value="Submit"> 
</form> 

Und dann für Checkbox Ereignis hören:

$(document).ready(function() { 
    $('.checkIt').bind('click', function() { 
    var name = $(this).attr('name'); 
    var value = $(this).val(); 
    var status; 
    if ($(this).is(":checked")) { 
     status = 'checked'; 
     // checkbox is checked 
     console.log("Checkbox is checked. Name: " + name + " Value: " + value); 


    } else { 
     status = 'unchecked'; 
     // checkbox is not checked 
     console.log("Checkbox is NOT checked. Name: " + name + " Value: " + value); 

    } 

    $.get("demo_form.asp?status=" + status + "&name=" + name + "&value=" + value, function(data) { 
     //Your server response here 
    }); 


    }); 
}); 

Hier ist eine Geige für Sie zu spielen: (Öffnen Sie die Konsole nach oben)

https://jsfiddle.net/ismaakeel/ejscjw3y/4/