Регистрация нулевых значений через Ajax

Используя jQuery $.post функция, если Вы отправляете a null значение, это прибывает в сторону сервера как "null". Пример:

JavaScript:

$.post('test.php', { foo : null });

PHP:

var_dump($_POST['foo']); // string(4) "null"

Я понимаю, почему это так, но действительно ли удивление было лучшим способом работать вокруг ограничения? Если Вы:

  1. Циклично выполняют через все переменные в JS перед отправкой их и замены пустой строкой?
  2. Интерпретировать "null" как null на стороне сервера?
  3. Не отправлять переменную вообще?
  4. Что-то еще?
14
задан nickf 15 June 2010 в 04:35
поделиться

3 ответа

Я бы закодировал его в 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
14
ответ дан 1 December 2019 в 14:21
поделиться

Попробуйте преобразовать объект javascript в JSON с помощью:

$.post('test.php', JSON.stringify({ foo : null }));
0
ответ дан 1 December 2019 в 14:21
поделиться
  1. Это не будет хорошей идеей производительности, особенно если задействованы большие наборы переменных.
  2. Возможно. Это можно сделать, выполнив поиск всех ожидаемых значений и игнорируя все остальное. прямой перевод "нуль" -> ноль может быть опасен при вводе данных пользователем.
  3. Это приведет к тому, что переменная не будет установлена. тогда можно было бы использовать! isset () для этой переменной. Это был бы мой выбор.

Если вы не хотите выполнять преобразование между JSON, я бы использовал вариант 3 и просто не отправлял бы никакие переменные с нулевым значением, а затем использовал if (! Isset ($ _ POST ['my-var']) )

0
ответ дан 1 December 2019 в 14:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: