Jak przesłać tablice jsonem przez ajax do skryptu PHP

0

Mam taki problem coś tam majsterkowałem, ale mi to nie wychodzi do rzeczy próbuje przesłać formularz, który zawiera 7 pól i użytkownik może sobie dodawać pola w zalezności od tego ile chce czyli tablica będzie zawierać 7*n długości i dwa pola tekstowe i teraz próbowałem na różne sposoby, nie wiem może nie rozumiem do końca javascriptu(jquery) daje kod.

var i = 0;
function add_drugs() {
        i++;
        $(".drug").append("<tr class=\"drugs\" ><td width=\"30%\"><input type=\"text\" name=drugs1[" + i + "] class=\"form-control\"></td><td width=\"10%\"><input type=\"text\" name=\"drugs2[]\" class=\"form-control\"></td><td width=\"10%\"><input type=\"text\" name=\"drugs3[]\" class=\"form-control\"></td><td width=\"10%\"><input type=\"text\" name=\"drugs4[]\" class=\"form-control\"></td><td width=\"10%\"><input type=\"text\" name=\"drugs5[]\" class=\"form-control\"></td><td width=\"10%\"><input type=\"text\" name=\"drugs6[]\" class=\"form-control\"></td><td width=\"10%\"><input type=\"text\" name=\"drugs7[]\" class=\"form-control\"></tr>");

}

function save_visit(url) {
    var visit = $( "[name='visit_text']" ).val();
    var drugs1 = [];
    //var data = $('#form_id_here').find('input[name^="YOUR_INPUT_ARRAY_NAME_HERE"]').serialize();
    //var drugs = $( "[name='drugs1[]']" ).serializeArray();
    //for (var i = 0;i < drugs1.lenght;i++) {
        //$('#s').get(url, "a");
//        $("#s").load(url + "?d="+jQuery("form").serializeArray())
       //$("#s").post(url, "a");
        //alert("drugs");

 var x = $("form").serializeArray();  
 var j = 0;
 var z = 0;
 var tab = "{";
 var visit_text = "";
        $.each(x, function(i, field){

             tab +=('"' +  field.name + '"' + ":" + field.value + " ");  
        });
        tab += "}";
        $("#s").load(url + "?d=" + "tab");
        alert(tab);
                $.each(x, function(i, field){

            // tab +=('"' +  field.name + '"' + ":" + field.value + " ");  

            if (j ==0) {
                visit_text = field.value;
            }
            else {
                if (field.name  == "drugs1[1]") {
                  tab[z] = "niko";
                }
                else {
                    tab[z] = field.value;

                }
                $("#s").append(field.name); 
                //$("#s").append(field.name  + "-"+ j + ":" + field.value + " ");  
                z++;
            }
            j++;

        });  

 //$("#s").append(tab[0]);  

    //}
    //var obj = JSON.parse(drugs);
    //  var a = [];
  //for ( var i = 0; i < drugs.length; i++ ) {
    //a.push( drugs[ i ].innerHTML );
  //}
  //$( ".drug" ).text( a.join( " " ) );
//}

    //$('.drug').data(drugs1);

}
<div id='body_patients'>
    <div class="center">
        <span class="visit">Opis wizyty</span>
    </div>
    <form method="get">
        <textarea name="visit_text"  rows="16" class="form-control"></textarea>
        <div class="center">
            <span class="visit">Jakie leki</span>
        </div>

            <table class="table">

                <tr class="drugs">
                    <td width="30%">
                        Nazwa leku
                    </td>
                    <td width="10%">
                        dawka leku
                    </td>
                    <td width="10%">
                        Porcja rano
                    </td>
                    <td width="10%">
                        Porcja południe
                    </td>
                    <td width="10%">
                        Porcja wieczór
                    </td>
                    <td width="10%">
                        Porcja noc
                    </td>
                    <td width="10%">
                        Ilość tabletek
                    </td>

                </tr>
                @for ($i=0;$i <= count($drugs);$i++) 
                <tr class="drugs">
                    <td >
                        <input type="text" name="drugs1[]" value="{{$drugs[$i][0]}}" class="form-control">
                    </td>
                    <td>
                        <input type="text" name="drugs2[]" value="{{$drugs[$i][1]}}" class="form-control">
                    </td>
                    <td>
                        <input type="text" name="drugs3[]" value="{{$drugs[$i][2]}}" class="form-control">
                    </td>
                    <td>
                        <input type="text" name="drugs4[]" value="{{$drugs[$i][3]}}" class="form-control">
                    </td>
                    <td>
                        <input type="text" name="drugs5[]" value="{{$drugs[$i][4]}}" class="form-control">
                    </td>
                    <td>
                        <input type="text" name="drugs6[]" value="{{$drugs[$i][5]}}" class="form-control">
                    </td>
                    <td>
                        <input type="text" name="drugs7[]" value="{{$drugs[$i][6]}}" class="form-control">
                    </td>
                </tr>

                @endfor
                <table class="table drug">

                </table>
            </table>

            <button type="button" class="btn btn-primary" onclick="add_drugs()">Dodaj leki</button>

        <div class="center">
            <span class="visit">Choroby pacjenta</span>
        </div>
            <div id='s'>
                ss
            </div>
        <textarea class="form-control" name="diseases" rows="7">{{$diseases}}</textarea>
        <div class="center">
            <input type="button" value="Zapisz" class="btn btn-primary" onclick="save_visit('{{url('/doctor/new_visit_submit')}}')">
        </div>
    </form>
</div>

No i tutaj jeszcze nie udało mi się przesłać danych json do php dałem przykładowy json

    public function save_visit() {
        $json = '{"a[]":1,"b":2,"c":3,"d":4,"e":5,"a[1]":1,"b":2,"c":3,"d":7,"p":17}';

        var_dump(json_decode($json));

    }
0

$("#target").load("/action.php", $( "form" ).serialize()); ( ͡°╭͜ʖ╮͡° )

0

To znaczy przesłać się tego nie da ale jak dam alert($( "form" ).serialize())) to drukuje mi wszystkie elementy tablicy z indeksami, ale jak biorę $("#s").load(url + "?d=" + $( "form" ).serialize())); To drukuje tylkompierwsze pole tekstowe.

0

Dobrze już wiem tylko teraz jak w php przejśc przez te wszystkie pola zakładając że pól może być 7*n czyli jak je ponumerować ?

0

Dobrze już sobie poradziłem trzeba było trochę pomysleć i po stronie PHP wykonać print Input::get("drugs1")[1];

I zastosowałem tą funkcje serialize() po stronie js.

0

Brawo;)
Zamiast load skorzystałbym z $.get ewentualnie $.post dla większej ilości danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0