Pagina 1 din 1

repartizare valori returnate in aceeasi functie ajax

Scris: Mie Sep 20, 2017
de sterica
Salutare,

Am urmatorul cod HTML:

Cod: Selectaţi tot

<html>
<head>
<script> includ graficul Highcharts</script>
</head>

<body>
<form action="" method="post">
	<select id="an" name="an" onchange="fetch_select();">
		<option value="" disabled>--> Alege anul  <--</option>
		<?php
                        $today = date('Y');
                        for ($i=2014; $i <= $today; $i++) {
                            if ($today==$i ){
                                $selected = "selected='selected'";
                            }else {
                                $selected = "";
                            }
                            echo "<option value='$i' $selected>$i</option>";
                        }
                   ?>
	</select>
</form>

<div id="id1"><table></table></div>
<div id="id2">Grafic Highcharts</div>
</body>

</html>
<script>
window.onload = fetch_select();
function fetch_select(){
    var sel_an = $('#an).val();

    $.ajax({
        type: 'POST',
        url: 'index.php',
        data: {get_an: sel_an},
        success: function(result){
            $("#id1").html(result); // aici este rezultatul din prima functie
            // cum pot aduce rezultatul din a doua functie si sa il trimit in variabila data_v din functia columnChart
        }
    });
}


// scriptul pentru chart
function columnChart(data_v) {
    if(data_v.length >0){
        Highcharts.chart('id2', {
            chart: {
                type: 'column'
            },
            title: {
                text: 'Stacked column chart'
            },
            xAxis: {
                categories: data_v
            },
            yAxis: {
                min: 0,
.....
</script>
Valorile din form sunt prelucrate in doua functii php (in viitor am de gand sa folosesc mai multe functii) si sunt trimise cu ajax.

Prima functie are ca rezultat return '<td>......</td>', iar rezultatul este destinat div-ului 1.
A doua functie are ca rezultat return un: json_encode($arr), iar rezultatul acestei functii este destinat unei variabile dintr-o functie js data_v.
Cum pot repartiza valorile returnate de functii cu ajutorul lui ajax destinate fiecarui div/functie js?

Multumesc!

repartizare valori returnate in aceeasi functie ajax

Scris: Mie Sep 20, 2017
de MarPlo
Salut
In ajax verifici rezultatul de la php, si in functie de ceea ce stii ca vrei sa contina faci repartizarea.
Cam asa:

Cod: Selectaţi tot

success: function(result){
  //if result is string with <td>, else, if is object
  if((typeof result === 'string') && result.match(/\<td\>/i)) $("#id1").html(result);
  else if(typeof result === 'object') data_v = result;
}

repartizare valori returnate in aceeasi functie ajax

Scris: Joi Sep 21, 2017
de sterica
Ajax primeste valorile prelucrate de la un if:

Cod: Selectaţi tot

 if(isset($_POST['get_an'])){
        $an = $_POST['get_an'];
        echo functia1 ($an, $conn);
        echo functia2 ($an, $conn);
        exit;
    }
Acest if imi returneaza un string:
<td>.......</td>rezultatul din functia2
Iar in ajax nu se mai ajunge la else if.
Cum pot separa cele doua raspunsuri de la functii in string si object?

Multumesc!

repartizare valori returnate in aceeasi functie ajax

Scris: Joi Sep 21, 2017
de MarPlo
Daca vrei sa transmiti la ajax si string-ul si array-ul in acelasi raspuns, ar merge daca trimiti din php un singur sir json cu sirul <td> si array-ul pt data_v.
La ajax sa primesti:

Cod: Selectaţi tot

{
"str":"<td>...</td>",
"ob":{...}
}
Cam asa in php:

Cod: Selectaţi tot

$resp =[
  'str'=>'<td>...</td>',
  'ob'=>$array
];
echo json_encode($resp);
Iar in ajax:

Cod: Selectaţi tot

if((result.str) $("#id1").html(result.str);
if(result.ob) data_v = result.ob;

repartizare valori returnate in aceeasi functie ajax

Scris: Joi Sep 21, 2017
de sterica
multumesc mult de ajutor, incerc sa adaptez aceasta varianta