我在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
那我该怎么办呢?
答案 0 :(得分:2)
问题是你的爆炸功能是将$data
分割为=
符号(字符串中不存在) - 一些基本的调试会告诉你。
这是字符串的格式:
data: 'data_id=fish/config/horse/config/car'
...所以$_POST['data_id'] = 'fish/config/horse/config/car';
现在,我不确定您要使用此代码尝试实现的目标,但如果您尝试通过=
符号从AJAX中拆分该字符串,则您根本不需要。它只是告诉ajax data_id
将等于...
。 =
实际上并没有在PHP中出现。
如果您要拆分该字符串,则应该改为/
。
另外,为了更清楚您的AJAX,您应该将数据变量包装在{}
括号内,而不是在引号内包含变量名:
data: {
data_id: 'fish/config/horse/config/car'
}
答案 1 :(得分:0)
这是您的发布数据:data_id=fish/config/horse/config/car
这意味着$_POST['data_id']
已经包含fish/config/horse/config/car
由于其中没有=
,因此爆炸它将产生一个只有一个索引为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