未定义的偏移量1,php中的数组
我有以下JavaScript代码:未定义的偏移量1,php中的数组,php,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”文件中,我有以下代码
$.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'
。。。所以$\u POST['data\u id']='fish/config/horse/config/car'代码>
现在,我不确定您想用这段代码实现什么,但是如果您想用=
符号从AJAX中分割字符串,您就不需要了。它只是告诉ajax,data\u id
将等于…
。=
实际上并没有在PHP中出现
如果要拆分该字符串,则应改为使用/
另外,为了更清楚地使用AJAX,您应该将数据变量包装在{}
括号内,而不要将变量名包含在引号内:
data: {
data_id: 'fish/config/horse/config/car'
}
这是您的帖子数据:data\u id=fish/config/horse/config/car
这意味着$\u POST['data\u 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
打印($data)以查看其中包含的内容,并将其添加到您的问题中以帮助我们回答。您可能有$\u POST['data\u id']='fish/config/horse/config/car'你为什么不把你的两个问题合并成一个呢?你在每个问题上都得到了不同的答案,因为你没有提供足够的上下文,现在你正在把一只兔子赶下一个洞。。。