repartizare valori returnate in aceeasi functie ajax

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
sterica
Mesaje: 285

repartizare valori returnate in aceeasi functie ajax

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!

MarPlo Mesaje: 4343
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;
}

sterica Mesaje: 285
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!

MarPlo Mesaje: 4343
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;

sterica Mesaje: 285
multumesc mult de ajutor, incerc sa adaptez aceasta varianta

Subiecte similare