2014-12-13 2 views
0

Привет я использую в PHP array_key_exists, вот мой кодarray_key_exsists не работает, как ожидалось PHP

$action_array = array(
    'add_post_ajax'=>'posts' 
); 


if ($_SERVER['REQUEST_METHOD'] === 'POST') 
{ 
    echo $_POST['action']; 
    if(array_key_exists($_POST['action'],$action_array)) 
    { 
     $class = $action_array[$_POST['action']]; 
    } 
    else 
    { 
     echo "wrong data"; 
    } 
} 

echo $_POST['action']; дисплей add_post_ajax, то он печатает wrong data

странно, пожалуйста, помогите мне, я делаю что-нибудь здесь не так

UPDATE

Я также попытался урезать

if(array_key_exists(trim($_POST['action']),$action_array)) 

еще один и тот же результат:/

вот мой запрос Ajax

xmlhttp.send("action='add_post_ajax' &name=" + name + "&email=" + email + "&post=" + post); 

echo $_POST['action'] дает мне add_post_ajax но var_dump($_POST['action']) дает мне проводное результат

<pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'&#39;add_post_ajax&#39; '</font> <i>(length=16)</i> 
</pre> 

Что это: o

+0

Другой способ сделать это: if (isset ($ action_array [$ _ POST ['action']])) ' –

+0

Работает отлично! Вы уверены, что он возвращает 'add_post_ajax'? – Rizier123

+0

Да, я уверен. @JohnConde, я попробовал один из них все тот же –

ответ

4

Ваша проблема в одинарных кавычках.

Ваш $ _POST [ 'действие'] использует 'add_post_ajax' но вы проверяете для add_post_ajax

Когда вы отправляете это:

xmlhttp.send("action='add_post_ajax' ... 

вы получите это:

&#39;add_post_ajax&#39; (length=16) 

add_post_ajax является 14 символов, дополнительные два символа: &#39;; это символ html для одной кавычки.