Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] json object php

Estas en el tema de json object php en el foro de PHP en Foros del Web. Hola estoy creando un proyecto de un blog y he creado un sistema de like-dislike he sacado de un apagina un codigo jquery para implementarlo ...
  #1 (permalink)  
Antiguo 08/12/2014, 23:59
 
Fecha de Ingreso: mayo-2013
Mensajes: 8
Antigüedad: 11 años, 6 meses
Puntos: 1
json object php

Hola estoy creando un proyecto de un blog y he creado un sistema de like-dislike
he sacado de un apagina un codigo jquery para implementarlo a mi proyecto
Código:
$('.like_button').click(function(){
    $(this).attr('id', 'like_button');
    $.ajax($(this).attr('data-href'))
    .done(function( data ) {
       if(data.message == 'Liked')
       {
         $('#like_button').children('i').css('color', '#FF6448');
         $('#like_button').attr('data-href', data.url);
	 $('#like_button').children('span').html(parseInt($('#like_button').children('span').html())+1);
         $('#like_button').removeAttr('id');
       }
       else
       {
         $('#like_button').children('i').removeAttr('style');
         $('#like_button').attr('data-href', data.url);
	$('#like_button').children('span').html(parseInt($('#like_button').children('span').html())-1);
         $('#like_button').removeAttr('id');
       }
       console.log( data );
    });
  });
el codigo que retorna la accion
Código:
public function addLike($post){
        $sql = "UPDATE post SET post.likecount = post.likecount+1 WHERE post.id = ?";
        $res = $this->connect->prepare($sql);
        $res->bindParam(1,$post,PDO::PARAM_INT);
        $res->execute();
        
        $json = array('message' => 'Liked', 'url' =>$this->getUrl().'/like/'.$post);

        echo json_encode($json, JSON_PRETTY_PRINT);
    }
y por consola deberia obtener este valor
Object {message: "Liked", url: "http://blog/unlike/397"}

pero me devuelve esto por consola:
Código:
 {
    "message": "Liked",
    "url": "http:\/\/blog\/unlike\/379"
}
como hago para que me retorne los valores antes mensionados
de ante mano muchas gracias
  #2 (permalink)  
Antiguo 09/12/2014, 00:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: json object php

¿Dices que console.log() te muestra lo siguiente?

Cita:
Object {message: "Liked", url: "http://blog/unlike/397"}
¡Es completamente normal!

JSON en avascript es... Javascript, un objeto común y corriente, nada más.

Si esperabas ver lo siguiente:
Código Javascript:
Ver original
  1. {
  2.     "message": "Liked",
  3.     "url": "http:\/\/blog\/unlike\/379"
  4. }

Lamento decirte que... ¡también tienes razón!

Esa es la representación en JSON de un objeto, que en Javascript es...

¡Acertaste de nuevo!

JSON

A todo esto, ¿exactamente cual es el problema?

Por más que leo tu mensaje no lo entiendo, es decir, el problema te lo has inventado tu solo.

¿No será que deberías especificar que la petición se trata de AJAX y hace falta el dataType como JSON?

A final de cuentas tu problema es a simple vista Javascript, no encuentro qué relación le ves con el sub-foro de PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/12/2014, 10:19
 
Fecha de Ingreso: mayo-2013
Mensajes: 8
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: json object php

console.log() me muestra
Código:
{
    "message": "Liked",
    "url": "http:\/\/blog\/unlike\/379"
}
codigo jquery:
Código:
$('.like_button').click(function(){
    $(this).attr('id', 'like_button');
    $.ajax($(this).attr('data-href'))
    .done(function( data ) {
       if(data.message == 'Liked')
       {
         $('#like_button').children('i').css('color', '#FF6448');
         $('#like_button').attr('data-href', data.url);
	 $('#like_button').children('span').html(parseInt($('#like_button').children('span').html())+1);
         $('#like_button').removeAttr('id');
       }
       else
       {
         $('#like_button').children('i').removeAttr('style');
         $('#like_button').attr('data-href', data.url);
	$('#like_button').children('span').html(parseInt($('#like_button').children('span').html())-1);
         $('#like_button').removeAttr('id');
       }
       console.log( data );
    });
  });
y el codigo jquery (de arriba) espera esto:
Código:
Object {message: "Liked", url: "http://blog/unlike/397"}
si te fijas en el codigo jquery espera recibir un mensaje (message: "Liked") para que cambie la url de data-href del valor devuelto (url: "http://blog/unlike/397")y asi ir alternando entre url, entonces mi problema es que nunca se cumple la primera sentencia.
como hago para recibir un data.message y un data.url desde donde se ejecuta la funcion php en este caso:
Código PHP:
public function addLike($post){
        
$sql "UPDATE post SET post.likecount = post.likecount+1 WHERE post.id = ?";
        
$res $this->connect->prepare($sql);
        
$res->bindParam(1,$post,PDO::PARAM_INT);
        
$res->execute();
        
        
$json = array('message' => 'Liked''url' =>$this->getUrl().'/unlike/'.$post);

        echo 
json_encode($jsonJSON_PRETTY_PRINT);
    } 
PD: console.log lo uso para ver si realmente me esta enviando los valores esperados, ¿porq eu coloco este mensaje aca? por que es una funcion php la que me tiene que devolver el valor que necesito (segun yo)

Última edición por satanichails; 09/12/2014 a las 10:29
  #4 (permalink)  
Antiguo 09/12/2014, 11:00
 
Fecha de Ingreso: mayo-2013
Mensajes: 8
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: json object php

ya lo he solucionado me faltaba poner
Código PHP:
header('Content-type: application/json; charset=utf-8'); 

Etiquetas: html, json, object, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:40.