Используя jQuery $.post
функция, если Вы отправляете a null
значение, это прибывает в сторону сервера как "null"
. Пример:
JavaScript:
$.post('test.php', { foo : null });
PHP:
var_dump($_POST['foo']); // string(4) "null"
Я понимаю, почему это так, но действительно ли удивление было лучшим способом работать вокруг ограничения? Если Вы:
"null"
как null
на стороне сервера?Я бы закодировал его в JSON.
Например:
$.ajax({
url: 'test.php',
type: 'POST',
data: JSON.stringify({foo : null}),
contentType: "application/json",
success: function(data) {
// ...
}
});
Вы можете использовать json_decode
на сервере, и типы будут сохранены:
$msg = json_decode(file_get_contents("php://input"));
var_export($msg->foo); // NULL
Попробуйте преобразовать объект javascript в JSON с помощью:
$.post('test.php', JSON.stringify({ foo : null }));
"нуль" -> ноль
может быть опасен при вводе данных пользователем. Если вы не хотите выполнять преобразование между JSON, я бы использовал вариант 3 и просто не отправлял бы никакие переменные с нулевым значением, а затем использовал if (! Isset ($ _ POST ['my-var']) )