Неопределенное смещение 1, массив в php

У меня этот код в 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 

Итак, как я могу это исправить?

Related of "Неопределенное смещение 1, массив в php"

Проблема в том, что ваша функция разрыва расщепляется на $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