У меня этот код в JavaScript:
$.ajax({ type: "POST", url: "funcoes/a-php/ler/ler_config.php", data: 'data_id=fish/config/horse/config/car', cache: false, success: function(data_o){ alert(data_o); } });
и в файле 'ler_config.php' у меня есть эти коды:
if($_SERVER['REQUEST_METHOD'] == 'POST'){ $data = $_POST['data_id']; list($name, $value) = explode('=', $data, 2); $result = explode('/config/', $value); print_r($result); }
Поэтому у меня проблемы с этой строкой:
list($name, $value) = explode('=', $data, 2);
и php замечают меня, этот мессенджер:
Undefined offset 1
Итак, как я могу это исправить?
Проблема в том, что ваша функция разрыва расщепляется на $data
символами =
(которые не существуют в строке) – какая-то базовая отладка сказала бы вам об этом.
Это формат вашей строки:
data: 'data_id=fish/config/horse/config/car'
… так что $_POST['data_id'] = 'fish/config/horse/config/car';
Теперь я не уверен, чего вы пытаетесь достичь с помощью этого кода, но если вы пытаетесь разделить эту строку с AJAX на знак =
, вам просто не нужно. Это просто говорит ajax, что data_id
будет равен ...
The =
самом деле не выходит в PHP.
Если вы разделяете эту строку, она должна быть /
вместо.
Кроме того, чтобы быть более четким с вашим AJAX, вы должны обернуть свои переменные данных внутри {}
скобок и не включать имя переменной внутри кавычек:
data: { data_id: 'fish/config/horse/config/car' }
Это ваши данные для data_id=fish/config/horse/config/car
: data_id=fish/config/horse/config/car
Это означает, что $_POST['data_id']
уже будет содержать fish/config/horse/config/car
Так как в нем нет =
в результате взрыва он даст массив с единственным значением ONE с индексом 0
. Второго значения не будет с индексом 1
. Таким образом, ваше сообщение об индексе не существует.
Таким образом, вместо list($name, $value) = explode('=', $data, 2);
… ты должен сделать:
$name = 'data_id'; // this is the key value you already used for $data $value = $_POST['data_id']; // or $value = $data; it's the same