JavaScript olmadan bir HTML formundan bir dizi POST


91

Biraz karmaşık bir formum var ve sunucu tarafı (PHP) işlemeyi bir demet dizisi yerel olarak POST yaparak basitleştirmeyi umuyorum.

Formun ilk bölümü bir Kullanıcıyı temsil eder :

  • İsim
  • Soyadı
  • E-posta adresi
  • Adres
  • vb

Formun ikinci bölümü bir Ağacı temsil eder :

  • Meyve
  • Yükseklik
  • vb

Sorun şu ki , aynı formda tek bir Kullanıcı için birden çok Ağacı POST yapabilmem gerekiyor . Bilgileri bir Ağaç dizisi ile tek bir Kullanıcı olarak göndermek istiyorum, ancak bu bir formla yapmak için çok karmaşık olabilir. Akla gelen tek şey, bir Kullanıcı nesnesi ve bir Ağaç nesneleri dizisi ile bazı JSON mesajı oluşturmak için javascript kullanmaktır. Ancak daha fazla kullanıcıyı desteklemek için javascript kullanmaktan kaçınmak iyi olur (bazı kişilerin komut dosyaları kapatılmıştır).


1
Dizi düzeni garanti ediyor mu? Birden fazla alanı olan bir Ağaç nesneleri dizisi istiyorum, bu nedenle bu, bir Ağacı temsil etmek için birden çok dizi kullanmam gerektiği ve dizilerin sıralanması gerektiği anlamına gelir, böylece hangi Ağacı temsil ettiklerini anlayabilirim.
styfle

Yanıtlar:


156

bunu kontrol edin.

<input type="text" name="firstname">
<input type="text" name="lastname">
<input type="text" name="email">
<input type="text" name="address">

<input type="text" name="tree[tree1][fruit]">
<input type="text" name="tree[tree1][height]">

<input type="text" name="tree[tree2][fruit]">
<input type="text" name="tree[tree2][height]">

<input type="text" name="tree[tree3][fruit]">
<input type="text" name="tree[tree3][height]">

$ _POST [] dizisinde bu şekilde bitmelidir (kolay görselleştirme için PHP biçimi)

$_POST[] = array(
    'firstname'=>'value',
    'lastname'=>'value',
    'email'=>'value',
    'address'=>'value',
    'tree' => array(
        'tree1'=>array(
            'fruit'=>'value',
            'height'=>'value'
        ),
        'tree2'=>array(
            'fruit'=>'value',
            'height'=>'value'
        ),
        'tree3'=>array(
            'fruit'=>'value',
            'height'=>'value'
        )
    )
)

6
Dizi indekslemede hangi karakterlere izin verilir? ,.: `@ Kullanabilir miyiz? Örnek: tree[tree 1][fr ui_t] tree[tree.1][fru:it] tree[tree@1][fru,it] _ anahtar adlandırmada yalnızca güvenli sınırlayıcı mıdır?
CoR

5
diziyi otomatik olarak indekslemek geçerli olur tree[][fruit]ve tree[][height]olmaz?
Wobbles

Gönderilen bu veriyi js'de geri çağırmada kullanmak üzere dizi / nesne olarak nasıl elde edebilirim ... denedim new formData($("form")[0])ve jQuery'nin $("form").serializeArray()her ikisi name="tree[tree1][fruit]"de dize olarak geri dönüyor .... yardım
santosh

Not: Form verilerini .serialize()veya olarak toplamak için jquery işlevleriyle çalışmaz.serializeArray()
SubjectDelta

Laravel'de denedim ama çalışmadım
Veshraj Joshi

67

Ayrıca aynı ada sahip birden çok girdi gönderebilir ve giriş adına boş köşeli parantezler ekleyerek bunları bir diziye kaydettirebilirsiniz:

<input type="text" name="comment[]" value="comment1"/>
<input type="text" name="comment[]" value="comment2"/>
<input type="text" name="comment[]" value="comment3"/>
<input type="text" name="comment[]" value="comment4"/>

Php kullanıyorsanız:

print_r($_POST['comment']) 

bunu alacaksın:

Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.