2014-12-13 41 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_ajaxvar_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']]))' – 2014-12-13 18:45:51

+0

適合我!你確定它返回的是'add_post_ajax'嗎? – Rizier123 2014-12-13 18:46:50

+0

是的,我確定。 @JohnConde,我試了一下還是一樣 – 2014-12-13 18:47:34

回答

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字符。