Pergunta

Eu tenho uma tabela de dados na minha página. As colunas são "start", "fim", "comentário" e "opções". Dentro da coluna de opções é um botão para excluir a linha, e um botão que faz a linha da editável mesa. Isso permite que os valores de "start", "fim" e "comentário" de ser mudado. Clicando-lo novamente termina o processo de edição. Finalmente, há uma maneira de adicionar outra linha à tabela. Tudo isso funciona como esperado.

Eu quero adicionar um botão na parte inferior que cria uma matriz fora dos dados na tabela, que se parece com isso (representado como JSON puramente para a facilidade de mostrar ao SO: não obrigatório):

[
    {
        "start"     :"2009/08/01",
        "end"       :"2009/08/08",
        "comment"   :"an example date.",
    },
    {
        "start"     :"2009/07/01",
        "end"       :"2009/07/08",
        "comment"   :"another example date, a month earlier.",
    },
    {
        "start"     :"2000/07/01",
        "end"       :"2000/07/08",
        "comment"   :"another example date, a year earlier. You get the idea.",
    }
]

Eu não deve ter muita dificuldade para construir a matriz, mas uma vez que eu tenho, como posso publicá-la em um script php de back-end (que então usar put_csv() para gravar os dados para um arquivo)? Idealmente, seria do lado do servidor são disponibilizadas em um formato de matriz, para permitir a validação.

Estou feliz de usar jquery, se for necessário.

Foi útil?

Solução

Como você terminá-la ao servidor depende do que você quer archieve. Se você quiser carregar uma nova página, que irá processar os dados, você pode usar uma forma usual com entradas escondidas. Alternativamente, se você quiser processo está no fundo via AJAX, o uso jQuery.ajax como CRasco disse. De qualquer maneira que você usa, você precisa converter a matriz estruturada em uma lista de chave / valor simples.

Uma opção é gerar um documento JSON (Eu não acho que jQuery fornece uma função para isso, mas você pode facilmente encontrar algo) e usar um único campo com o documento serializado. Em seguida, no lado do servidor você usaria json_decode para obter a volta array. Se você estiver usando o método AJAX, a opção de dados na chamada jQuery.ajax iria conter:

{
    'data': '[{"start":"2009/08/01","end":"2009/08/08","comment":"an example date."},...'
}

Uma abordagem melhor seria para serializar-lo em uma lista de campos em um formato que PHP nativamente entende. Isso significa que você tem que fazer nada especial, e $_POST['data'] vai conter a matriz. Por exemplo:

{
    'data[0][start]': '2009/08/01',
    'data[0][end]': '2009/08/08',
    'data[0][comment]': 'an example date.',
    'data[1][start]': '2009/07/01',
    'data[1][end]': '2009/07/08',
    'data[1][comment]': 'another example date, a month earlier.',
    ... 
}

Se você estiver usando o método de formulário, você precisa gerar campos de entrada como:

<input type="hidden" name="data[0][start]" value="2009/08/01" />

Outras dicas

Eu definitivamente utilizar jQuery. Aqui é a página para a função $ .post ().

http://docs.jquery.com/Ajax/jQuery.post

Uma ressalva é que US $ .post () é um wrapper para a função de $ .ajax () que é simplificada e elimina sua capacidade de chamadas de retorno do jogo para qualquer coisa, mas um post bem-sucedido. Para transações importantes via AJAX, eu usaria o seguinte:

http://docs.jquery.com/Ajax/jQuery.ajax

Um exemplo é:

$.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: ({id : this.getAttribute('id')}),
      dataType: "html",
      success: function(msg){
         alert(msg);
      }
   });
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top