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

Antworten auf die Frage(8)

Ihre Antwort auf die Frage