未定义的偏移1,php中的数组

时间:2013-12-22 21:20:37

标签: 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

那我该怎么办呢?

2 个答案:

答案 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