2013-12-22 121 views
0

我有這樣的代碼在JavaScript:未定義偏移1,陣列在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 

那麼我該如何解決它?

+0

做一個的print_r($數據),看看它是什麼,並把它添加到你的問題,以幫助我們回答。 – Steve

+0

你有'$ _POST ['data_id'] ='fish/config/horse/config/car';' – baldrs

+0

你爲什麼不把你的兩個問題合併爲一個?你在每個問題上得到不同的答案,因爲你沒有提供足夠的上下文,現在你正在追逐一個洞下面的兔子... http://stackoverflow.com/questions/20733720/array-by-expressions –

回答

2

問題是你的爆炸函數正在分裂由=符號(它不存在於字符串中) - 一些基本的調試會告訴你。

這是你的字符串格式:

data: 'data_id=fish/config/horse/config/car' 

...所以$_POST['data_id'] = 'fish/config/horse/config/car';

現在,我不知道你想實現這個代碼是什麼,但如果你」重新嘗試從AJAX中將該字符串拆分=符號,您只是不需要。這只是告訴阿賈克斯data_id將等於...=實際上並沒有在PHP中出現。

如果您要拆分該字符串,則應改爲/

此外,爲了更加清楚你的AJAX,你應該換行內{}括號數據變量,不包括引號裏面的變量名:

data: { 
    data_id: 'fish/config/horse/config/car' 
} 
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