Boolesche Variablen, die über AJAX gepostet wurden, werden auf der Serverseite als Zeichenfolgen behandelt.
Folgen ist Teil einer AJAX-Funktionalität zum Hinzufügen von Klassen und Paketen zum Sitzungskorb: -
The jquery part
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");
}
Der AJAX Request Processing PHP Teil -
//Checking operation and other posted parameters
if($_POST['isClass'])
{
//Code to add class to session cart
}
else
{
//Code to add pack to session cart
}
Die seltsame Sache
Egal, ob ich true / false übergebe (durch Aufrufen von addClassToCart () und addPackToCart ()), der Code zum Hinzufügen einer Klasse zum Sitzungskorb wird immer ausgeführt.
Wenn ich Echo-Anweisungen wie folgt dort platziere: -
if($_POST['isClass'])
{
echo "see if condition ".$_POST['isClass'];
}
else
{
echo "see else condition ".$_POST['isClass'];
}
Dies ist die Ausgabe: -
addClassToCart ()see if condition true
addPackToCart ()see if condition false
Das Einfügen solcher Bedingungen in den jquery-Code funktioniert jedoch einwandfrei: -
function addItemToCart(itemId,isClass)
{
if(isClass)
alert("is class");
else
alert("is pack");
}
Finally, wenn ich den serverseitigen Code folgendermaßen ändere: -
if($_POST['isClass'] === true)
{
echo "see if condition ".$_POST['isClass'];
}
else
{
echo "see else condition ".$_POST['isClass'];
}
Dies sind die Ausgänge -
addClassToCart ()see else condition true
addPackToCart ()see else condition false
Also, warum wird die boolesche Variable hier als String behandelt? Mache ich beim Posten von Parametern etwas falsch?
anke, Sandeep