que sigue es una parte de una funcionalidad AJAX para agregar clases y los paquetes de sesión de la compra: -variables booleanas publicado por AJAX se tratan como cadenas en el lado del servidor
El jQuery parte
function addClassToCart(itemId)
{
addItemToCart(itemId,true);
}
function addPackToCart(itemId)
{
addItemToCart(itemId,false);
}
function addItemToCart(itemId,isClass)
{
$.post(url+"/ajax/add_cart", { operation: 'add_cart','isClass':isClass, 'itemId': itemId},
function(data)
{
if(data.success)
{
alert("item added to cart");
}
}, "json");
}
la parte de proceso de peticiones AJAX PHP -
//Checking operation and other posted parameters
if($_POST['isClass'])
{
//Code to add class to session cart
}
else
{
//Code to add pack to session cart
}
Lo extraño
No importa si yo paso verdadero/falso (llamando addClassToCart() y addPackToCart()), siempre el código para añadir la clase a la sesión carrito ejecuta.
Si pongo declaraciones de eco no como esto: -
if($_POST['isClass'])
{
echo "see if condition ".$_POST['isClass'];
}
else
{
echo "see else condition ".$_POST['isClass'];
}
Ésta es la salida: -
addClassToCart() see if condition true
addPackToCart() see if condition false
Poner condiciones como este en el jQuery Sin embargo, el código funciona bien: -
function addItemToCart(itemId,isClass)
{
if(isClass)
alert("is class");
else
alert("is pack");
}
Por último, si alterar el código del lado del servidor para esto: -
if($_POST['isClass'] === true)
{
echo "see if condition ".$_POST['isClass'];
}
else
{
echo "see else condition ".$_POST['isClass'];
}
Estas son las salidas -
addClassToCart() see else condition true
addPackToCart() see else condition false
Así que, ¿por qué es el booleano variable tratada como una cadena aquí? ¿Estoy haciendo algo mal al publicar parámetros?
Gracias, Sandeepan
Eso definitivamente no es * * inesperado. Todo lo que pasó a través de 'GET' o' POST' a PHP son cadenas. – NullUserException
sí, ahora veo ... editado el título de mi pregunta –