AJAX - ¿Cómo coger el resultado de dos declaraciones con JSON y devolverlo?

<<>>
   
Vista:

¿Cómo coger el resultado de dos declaraciones con JSON y devolverlo?

Publicado por santa (5 intervenciones) el 08/08/2018 20:53:06
pues resulta que llevo ya 3 días como loco buscando sin parar y de probar mil cosas a ver si me funcionan, pero nada. La cosa, es que envío con JQuery Ajax dos valores data.

Codigo JQuery:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var dia_em = $(this).val();
$('.form_input_dias').val(dia_em);
 
var dia_em2 = $('.form_input_dias').val();
 
$.ajax({
    url:"backend.php",
    method:"GET",
    data:{dia_id:dia_em, dia_id2:dia_em2},
    success:function(data){
        $('.bxslider1').html(data[0]);
        $('.bxslider2').html(data[1]);
 
    },
    error: function (request, status, error) {
        console.log(request.responseText);
    },
});

Al enviar solo un valor y existir solo una función, al devolverlo con: "$('.bxslider1').html(data);" funciona bien y no necesito json, pero al hacerlo con dos variables que devuelven 2 valores distintos a diferentes contenedores, me mezcla el contenido que supongo que es normal.

backend.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$get_dia_sel = request_var('dia_id', '0');
  $get_dia_sel2 = request_var('dia_id2', '0');
 
  if(isset($get_dia_sel)) {
 
      $link = mysqli_connect....;
      mysqli_select_db....;
 
      $query = "SELECT....";
 
      if($get_dia_selected == '0'){
 
         $query_contenido = "SELECT....";
         $query_count_contenido =   "SELECT ....";
      }
 
      $result_query = ....;
      $result_contenido = ....;
 
      $result_count_contenido = ....;
      $row_contador = mysqli_fetch_assoc($result_count_contenido);
      $count_contenido = $row_contador['c'];
 
      if ($count_contenido < 8){
 
          foreach ($result_contenido as $row_contenido) {
                  echo "<li><a><span>".$row_contenido['contenido']."</span><h5>".$row_contenido['nombre']."</h5></a></li>";
          }
 
          foreach ($result_query as $row_query) {
            for($i = 0; $i < 7; $i++) {
                  echo "<li><a><span>".$row_query['contenido']."</span><h5>".$row_query['nombre']."</h5></a></li>";
          }
      }
 }
 
 if(isset($get_dia_sel2)) {.......(el patrón de contenido es el mismo).............}

Quiero coger el resultado que salga del IF "$get_dia_sel" y del $get_dia_sel2 y devolverlos de manera separada como se ve en el codigo JQuery.

He probado hacerlo con JSON pero no lo consigo, espero que alguien me pueda ayudar, estoy desesperado ya, gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

¿Cómo coger el resultado de dos declaraciones con JSON y devolverlo?

Publicado por Yamil Bracho (182 intervenciones) el 08/08/2018 21:10:15
Concatenalos en una sola variables, separador por algun caracter que te permita saber donde termina uno y comienza el otro y entonces los separas en el codigo javascript. Por ejemplo

1
2
3
4
5
6
7
8
9
10
11
12
$result = '';
...
foreach ($result_contenido as $row_contenido) {
      $result = $result . "<li><a><span>".$row_contenido['contenido']."</span><h5>".$row_contenido['nombre']."</h5></a></li>";
}
 
....
$result = $result . "~"  // El separador es culebrita
 if(isset($get_dia_sel2)) {
  ...
// Aqui concatenas el otro resultado
}

Al final haces
echo $result

Y en tu codigo javascript :

1
2
3
4
5
success:function(data){
    var arr = data.split('~'):
    $('.bxslider1').html(arr[0]);
    $('.bxslider2').html(arr[1]);
},
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

¿Cómo coger el resultado de dos declaraciones con JSON y devolverlo?

Publicado por santa (5 intervenciones) el 08/08/2018 22:10:29
Muchas gracias por responder, realmente es una forma diferente de hacerlo es interesante pero tampoco me funciona. Había hecho muchas pruebas y al llamarlos siempre era el primer array era el único que me mostraba. Ahora me muestra solo el segundo hahah Continuaré intentando hacerlo con combinaciones con esta forma de llamarlo con javascript a ver si lo consigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Cómo coger el resultado de dos declaraciones con JSON y devolverlo?

Publicado por Yamil Bracho (182 intervenciones) el 08/08/2018 22:25:49
Coloca en javascript , antes de la linea
var arr = data.split('~'):

console.log(data);

Y asi ves que data esta llegando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

¿Cómo coger el resultado de dos declaraciones con JSON y devolverlo?

Publicado por santa (5 intervenciones) el 09/08/2018 01:44:26
pues parece que llega toda la data que tocaría pero no la esta imprimiendo en el HTML, quizás es un error de bxslider. Preguntaré a los desarrolladores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Cómo coger el resultado de dos declaraciones con JSON y devolverlo?

Publicado por santa (5 intervenciones) el 09/08/2018 02:23:31
Sisi, como sospechaba ya antes es el plugin de Bxslider. Porque he creado un nuevo bxslider diferente y he hecho que uno lo imprima normal y el otro en el nuevo y asi es funciona. Es más chapuzas pero funciona... Gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Cómo coger el resultado de dos declaraciones con JSON y devolverlo?

Publicado por santa (5 intervenciones) el 10/08/2018 19:10:26
Una pregunta más si no te molesta, y espero que lo veas. Resulta que también utilizo la transmisión de datos con ajax para otra cosa de la pagina y pasa que utilizo la misma pagina de backend.php para hacer las consultas. Entonces aunque la función para enviar los datos de este segundo ajax del que tenia la duda no se cumplen, utiliza las variables y arranca de todas formas y los inserta donde la primera función de ajax.
Había pensado en poner las declaraciones IF dentro de una función que llamaría el segundo ajax del que tenia la duda pero claro para hacerlo enviaría de todas formas una variable que declararía fuera de esta nueva función que crearía y entonces pasaría lo mismo.

No se si me habré explicado muy bien, ¿pero eso es porque no debería utilizar la misma pagina o hay alguna forma de que eso no suceda?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad