Nie mogę wykryć, czy zmienna ma wartość true czy false

0

No nie wiem jak to napisac.
mam formularz a w nim checkbox. Po klikniciu na formularz sprawdzam czy checkbox jest zaznaczony:

contact = $('#is_contact').is(':checked');

Dobra tu sprawdzam i mam albo true albo false.
teraz jak robie warunek

$contact = zmienna z formularza

if($contact) {
echo "jest";
} else {
echo "nie ma";
}

i zawsze mam wratosc "JEST". jakies wskazowki ????

0

Być może to ci pomoże;-) To pierwsza rzecz jaką wygooglałem.

0

JS działa po stronie klienta, podczas gdy PHP - serwera, nie możesz tego w taki sposób mieszać.

0

moge bo ja z JS przesylem przez AJAX do controlera i tam odbieram zmienna wlasnie ktora jest false lub true ale i tak warunek zwraca tylko jedna wartosc.

1

Zatem pokaż konkretnie jak to robisz, zrób var_dump($contact); oraz console.log(contact);.
Ano i sprawdź .prop('checked') jeszcze.

0

dobra nie chce tu uzywac brzydkich wyrazow ale zrobilem to na JS ze tam sprawdzam czy jest false czy true i przesylam to w zmiennej. bo inaczej nie dziala . h... wi czemu

3

Może odbierasz tę wartość nie jako boolean (true i false) tylko jako stringi "true" i "false"? Wtedy taki string zawsze będzie potraktowany jako true w if'ie.

http://php.net/manual/en/language.types.boolean.php

<?php
var_dump((bool) true);       // true
var_dump((bool) false);      // false
var_dump((bool) "");         // false
var_dump((bool) 1);          // true
var_dump((bool) 0);          // false
var_dump((bool) -2);         // true
var_dump((bool) 2.3e5);      // true
var_dump((bool) "any text"); // true
var_dump((bool) "false");    // true
var_dump((bool) array(12));  // true
var_dump((bool) array());    // false
?>
0

O ile sam nie ustawiasz jakiejś wartości JS przed wysłaniem to checkbox i radio które nie są zaznaczone nie są wysyłane, dla checkboxa zawsze wysyłana jest wartość inputa, ale tylko wtedy gdy jest on zaznaczony

proste demo

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form type="get">
        <input type="text" name="text">
        <input type="checkbox" value="wartosc" name="checkbox">
        <button>wyslij</button>
    </form>
</body>
</html>

spójrz na adres po wysłaniu formularza
z zaznaczonym

/test.html?text=

i odznaczonym checkboxem

/test.html?text=&checkbox=wartosc

w backendzie po prostu sprawdzasz czy wartość dla danego pola formularza istnieje

0

tak z JS wysylalem jako BOOL co znaczylo ze zawsze bylo TRUE bo wartosc istniala. Wiec w samym JS jak jest true ustawiam na 1 jak nie to na 0 i dziala elegancko. ale powiem wam ze sie naglowilem, sprawdzam i sprawdzam i no lipa byla az zwatpilem w logike mogeo kompa :D

// EDIT by @Koziołek IMO to ostatnie zdanie było bardzo nie na miejscu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1