Pobranie za pomoca ajax dwóch tablic przez json

0

Mam taki problem chcę za pomocą ajax pobrać dane z dwóch tabel i je wyświetlić w przeglądarce.

mam taki kod.


<div id='changeDateAction' style='display: none;'>
    <table class="table">
        <form method="get">
        <tr>
            <td>
                Wybierz akcje
            </td>
            <td>
                <select name="actionNameDate" class="form-control" onchange="loadActionDateChange('{{ route("user.changeActionDateName")}}')">
                    <option value='' selected></option>
                    @foreach ($actionDate as $list)
                        <option value="{{$list->id}}" >{{$list->name}} -  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{$list->created_at}}</option>
                        
                    @endforeach
                </select>
               
            </td>
        <tr>
            <td>
               Zmień akcje
            </td>
            <td>
                
                <select name="nameActionPlans" class="form-control">
                    
                </select>
                
            </td>
        </tr>
        <tr>
            <td colspan='2' class='center'>
                
                <input type="button" onclick="changeNameAction('{{ route('user.changeActionDateName2')}}')" value='Zmień nazwę' class='btn btn-primary'>
                
            </td>
        </tr>
        <tr>
            <td colspan='2' class='center'>
                <div id='changeNameActionForm2'>
                    
                </div>
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <div id="form3" class="center">
                    
                </div>
            </td>
        </tr>
        </form>
    </table>
</div>
function loadActionDateChange(url) {
    $.ajax({
    url : url,
        method : "get",
        data : 
          $("form").serialize()
        ,
        dataType : "html",
})
.done(function(response) {
    $("#changeNameActionDateForm").val(response);
    var tags = $.parseJSON( response );
    //alert(response);
    makeSelect(tags);
    
})
.fail(function() {
    $("#form3").html( "<div class='ajaxError'>Wystąpił błąd</div>" );
})
}
function makeSelect(response) {
    //for (i=0;i < response.length;i++) {
        alert(response.length);
    //}
}
    public function SettingaChangeActionDateName(Request $request) {
        //$actionArray = Actions_plan::selectAction($request->get("actionNameDate"));
        $actionArray = Actions_plan::selectAction($request->get("actionNameDate")));
        $actionArray2 = ActionApp::selectActionName();
        print json_encode(array_merge(json_decode($actionArray, true),json_decode($actionArray2, true)));
    //    print json_encode($actionArray);
    }

I teraz w funkcji SettingaChangeActionDateName pobiera( konwertuje na josn) mi i printuje zawartośc tych dwóch tablic i teraz jak je użyć, że w javascripcie mieć dwie tablice.
Ta pierwsza tablica $actionArray będzie miała jeden elemnt składający się z chyba 6 pól natomiast 2 tablica będzie miała 2 pola i n rekordów.

1

Encode, decode, encode. Skup się i zastanów co chcesz zrobić. Jak masz tablicę $x=['a','b'] i $y =[1,2] to nikt nie broni Ci zrobić tablicy $z['x'] =>$x; $z['y'] =$y;
Jak nawet potem zrobisz z tego Jsona to przecież łatwo będziesz się mógł odnieść do wartości jednej czy drugiej tablicy.

0

Tylko ja nie wiem jak się odnieść w js
bo w js do json odnoszę się za pomocą response.rekord

a jak będą dwie tablice to response.array1[0] ?

0

Już sobie poradziłem tak to zrobiłem

        $actionArray = Actions_plan::selectAction($request->get("actionNameDate"));
        $actionArray2 = ActionApp::selectActionName();
        $array = [];
        //array_push($array,$actionArray);
        //array_push($array,$actionArray);
        //array_push($array,$actionArray);
        //, json_decode(count($actionArray2))
        $array = array_merge(json_decode($actionArray,true),json_decode($actionArray2,true));
        $array2 = array_merge($array,array("count" => count($actionArray2)));
        print json_encode($array2, true);
function loadActionDateChange(url) {
    $.ajax({
    url : url,
        method : "get",
        data : 
          $("form").serialize()
        ,
        dataType : "html",
})
.done(function(response) {
    $("#changeNameActionDateForm").val(response);
    var tags = $.parseJSON( response );
    //alert(response);
    makeSelect(tags);
    
})
.fail(function() {
    $("#form3").html( "<div class='ajaxError'>Wystąpił błąd</div>" );
})
}
function makeSelect(response) {
    var select;
    for (i=0;i < response.count;i++) {
        select += "<option value='" + response[i].id2 + "'>" + response[i].name2 + "</option>";
    }
    $("#selectDate").html(select);
}
1

Nie żeby coś, ale json_encode nie przyjmuje bool jako 2 parametr.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.