Логическое значение не передается с помощью jQuery / $ .get - Почему? - PullRequest
2 голосов
/ 07 августа 2010

У меня есть сценарий внешнего интерфейса, который имеет следующий код jQuery:

$.get("/backend/post.php", { 
            title: title,
            message: post,
            stick: sticky
        }, function (output) {
            alert("Call Back");
            }
        }, "json");

stick - логическое значение, два других - строки. Я подтвердил, что они на самом деле установлены. Теперь на странице бэкэнда, с использованием $ _GET, title и, message и передачей, но $ _GET ['stick'] возвращается пустым, а функция PHP gettype () сообщает мне, что это NULL.

На запрос одного из комментариев:

sticky происходит из формы, это флажок, и я просто выбираю его с помощью этого кода:

var sticky = $("input[name=sticky]").attr('checked');

Когда я использую alert () для вывода значения sticky, оно вернет true / false в зависимости от того, что было выбрано.

Почему это логическое значение не передается? Сайт JSON сообщает, что в нем могут быть логические значения true / false. Но это не работает здесь по какой-то причине.

Ответы [ 2 ]

4 голосов
/ 07 августа 2010

Я не могу быть полностью уверен, потому что я сам не проверял, но я думаю, что это связано с тем, как запросы GET передаются в виде строк. Попробуйте что-то вроде этого:

var sticky = $("input[name=sticky]").attr('checked')?"true":"false";

$.get("/backend/post.php", { 
    title: title,
    message: post,
    stick: sticky
}, function (output) {
        alert("Call Back");
    }
}, "json");

Вполне вероятно, что это не сработает, но попробуйте.

0 голосов
/ 08 августа 2010

Если в форме входное значение не имеет значения, оно не будет отправлено в качестве параметра.Таким образом, отсутствие $_GET['stick'] эквивалентно параметру строки запроса stick=false.Так что если у вас должен быть параметр:

var sticky = 'true';

if($("input[name=sticky]").not(':checked')) {
    sticky = 'false';
}
...