Посылать ассоциативную мультипространственную Договоренность посредством использования формуляров

Такого формуляра как этот:

<form action="action.php" method="POST">
  Foo: <input type="text" name="foo"><br>
  <input type="submit" value="Submit">
</form>

Мы знаем, что, чтобы соглашаться clásicamente на информацию, полученную методом POST php он:

$_POST['foo']

Что внутри был бы чем-то как это:

/*arreglo obtenido por el método POST*/ [
    'foo' => 'bar'
]

Однако: Что он был бы должен изменять в этикетках html чтобы получать что-то как это?

[
    'name' => 'example of name',
    'activities' => [
        '0' => [
            'activity' => 'eat'
            'time' => '15:45:12'
            'reason' => 'some explanations'
        ]

        '1' => [
            'activity' => 'sleep'
            'time' => '21:07:12'
            'reason' => 'some explanations'
        ]
        //Se repite N número de veces
    ]
    'rpe' => 'example of rpe',
    'occupation' =>
]

Имея в виду, что формуляр (в динамическое существо) это произвел с JavaScript.


ЗАМЕТЬ: Я хочу знать, что то, что я должен изменять в этикетках html и как соглашение на информацию, препятствуя поколение моему формуляру; любой пример, у которого была бы сущность того, чего я хочу добиться, он хорошо.

Привет.

3
задан 17.06.2016, 18:21
3 ответа

Действительно тебе не нужно язык сценариев JavaScript или обрабатывать / конвертировать поля в JSON перед тем, как посылать формуляр. В PHP ты можешь использовать нотацию квадратных скобок, которые тебе автопроизведет ассоциативный array, когда будет обработан формуляр в стороне сервера.

Равно как если у тебя есть поле с квадратными скобками, производится автоматически array в PHP, когда послан формуляр, ты можешь определять индексы этого array и сервера делает работу из-за тебя. Только ты должен убеждаться в том, что индексы квадратных скобок правильны в твоем HTML, и после PHP возьмется за оставшуюся часть.

Например, со следующим формуляром:

<form method="post" action="wow.php">

    <input type="text" name="name" />

    <input type="text" name="activities[0][activity]" />
    <input type="text" name="activities[0][time]" />
    <input type="text" name="activities[0][reason]" />

    <input type="text" name="activities[1][activity]" />
    <input type="text" name="activities[1][time]" />
    <input type="text" name="activities[1][reason]" />

    <input type="text" name="rpe">
    <input type="text" name="occupation">

    <button>Submit</button>

<form>

когда я делаю один print_r($_POST) то, что я получаю, так это ассоциативный array:

Array
(
    [name] => Alvaro
    [activities] => Array
        (
            [0] => Array
                (
                    [activity] => Jugar
                    [time] => 1
                    [reason] => Game time!
                )

            [1] => Array
                (
                    [activity] => Estudiar
                    [time] => 2
                    [reason] => Estudiar es bueno
                )

        )

    [rpe] => 12
    [occupation] => Programador
)

что является тем, что ты ищешь.

1
ответ дан 24.11.2019, 14:07

И если вместо того, чтобы посылать данные о формуляре этой формы, ты подбираешь стоимость, и envГ-схвати их посредством JSON? Если возможно, она была бы хорошей формой. Так в таком JS как PHP у тебя есть функции, чтобы работать с этим.

В PHP у тебя есть json_encode () / json_decode () , в JS у тебя есть JSON.stringify () .

Соединил в ответ SO на английском, которые обрабатывают информацию на теме, используя array в формулярах и подбирая оцени в PHP.

2
ответ дан 24.11.2019, 14:07
  • 1
    S и # 237; это soluci и # 243; n м и # 225; s элегантный, но я требую делать это и #250; nicamente посредством php, именно поэтому в вопросе я упоминаю о и #191; qu и # 233; вот то, что я должен изменять в этикетках html? . В и # 250; n схвати и # 237; направлять и # 233; в счете то, о чем ты упоминаешь для будущего. –  Arturo G. 17.06.2016, 19:00
  • 2
    Также ты можешь использовать arrays для элемента, который ты посылал бы из-за POST, как в случае checkbox (я правда, которую я только это использовал в этом случае). –  edur 17.06.2016, 19:07

Что такой, хорошо ты можешь использовать DATASET, чтобы сохранять больше informaciГіn твоего неудара в лунку, aquГ - я оставляю тебе пример как мочь добавлять данные к DATASET неудара в лунку. Пример разработан JQUERY, я надеюсь, что он подает тебя.

$('#go').click(function() { //Aquí pues un simple click del div que hace funcion de boton, puedes colocar lo que tu ocupes.
  
  //Lo siguiente solo es pleno ejemplo, deberas adecuarlo a tus necesidades.
  
  /*Yo voy a consumir un JSON mediante una página libre*/
        var root = 'http://jsonplaceholder.typicode.com'; //URL de la página 
        $.ajax({
          url: root + '/posts/1', //url con metodos y variables.
          method: 'GET' //uso de GET como Método de Consumo
        }).then(function(data) { //Cuando termine de consultar.
          var a = $("#datos"); //Buscamos el input con id datos
          var b = JSON.stringify(data); // los datos que vienen del consumo los convertimos
          
          //aqui viene el punto clave de la solución
          a.attr("data-a",b); //Vamos a insertar los datos que vienen del consumo en los DATASET del input, entonces creamos el data-a y le agregamos los datos de la variable b.
          a.attr("data-b",b); //como pleno ejemplo hago lo mismo pero ahora con el data-b, tu puedes agregar tantos DATASET como gustes
     console.log("Datos del DATASET a: "+ a.attr('data-a'), "datos del DATASET b: "+a.attr('data-b'));
          
          //OJO: Tu puedes nombrara como gustes a los DATASET, pero siempre con la norma de: data-tunombre, data-otronombre, data-masnombre....
        }
               );
});
#go:hover{
cursor:pointer;
  background:yellow;
  color:red;
}
#go{
width:80px;
background: blue;
  color: white;
  margin: 10px;
  
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input id="datos">
  <div id="go">click aqui</div>
</form>
0
ответ дан 24.11.2019, 14:07

Теги

Похожие вопросы