2012-11-05 134 views
0

我在我的腳本文件,下面的代碼:空PHP變量

$.ajax({ 
    url: "server.php?saveEvent", 
    data: "myEvent=" + JSON.stringify(myEvent), 
    dataType: "json", 
    type: "post", 
    success: function (data) { 
     if (data) { 
      $("#log").append("<br />Evenement saved."); 
     } 
    } 
}); 

在server.php我使用檢索的變量:

if (isset($_GET['saveEvent'])) { 
    if (isset($_POST['myEvent'])) { 
     $firephp->log(gettype($_POST['myEvent'])); 
     $myEvent = json_decode($_POST['myEvent'], true); 
    } 
} 

當我測試了這個在我的本地,一切都很順利。不幸的是,在部署之後, $ myEvent 是空的。

使用firephp,我測試了變量中的內容,並查看了正在發送的頭文件。該對象被髮送到服務器,但仍然以某種方式PHP看它是一個空的變量。

有關這可能性的任何想法?它是一個PHP版本或JSON問題?

編輯:PHP版本5.2.17 =/JSON啓用

EDIT2:更改TE網址saveEvent = 1沒有改變任何東西

EDIT3:我知道製作GET和POST是有點怪,我會嘗試改變,但獲取/發佈不應該是一個問題,我認爲

+0

htaccess的問題一個字符串? – Rooster

+0

你安裝了什麼版本的PHP?可能是因爲你沒有啓用json擴展程序 – ianaz

+1

你正在發送一個post請求,但在頂部有一個獲取條件? – itachi

回答

2

您的uri包含一個GET參數,saveEvent。你檢查POST數據僅供

嘗試檢查這一點:$_GET['saveEvent']

即使如此,該參數還沒有得到分配給它的價值,可能網址更改爲?saveEvent=1
但也沒有理由讓你使用2 if語句:

if (isset($_GET['saveEvent'] && isset($_POST['myEvent'])) 
{ 
    //do stuff 
} 

因爲它似乎有更多的不僅僅是GETPOST問題回事,你可能想在末尾添加符號(&)您的網址:看看你的控制檯,在XHR請求剛剛貼的POST參數在您的網址的結尾,所以URI會像下列網址的任何一個:

server.php?saveEvent=truemyEvent=foo 
server.php?saveEvent=1myEvent=foo 
server.php?saveEventmyEvent=foo 
//or 
server.php?saveEvent=1?myEvent=foo 

然而,你需要的是:

server.php?saveEvent=1&myEvent=foo&something=else 

基本上,堅持1方法,無論是POST或GET,並確保各種參數分開,因爲他們應該分開。
我不確定這是否是問題,但請嘗試var_dump-在$_REQUEST超全球範圍內,以及$_GET,$_POST以及您有什麼...

+0

啊一個燈開關剛剛在我的腦海裏繼續,謝謝! – Tim

+0

@Tim:最終解決了什麼問題?這是一個缺少的&符號,或其他所有的東西? –

+0

是的,&符似乎有所幫助,雖然它後來的數據應該存在於主體中。我也擺脫了額外的獲取參數。 – Tim

1

是否只使用服務器定義的server.php?saveEvent行爲?這樣做的行爲可能因服務器或PHP版本而異。 PHP變量會被設置爲什麼?用這個速記不太清楚,所以我會像你一樣使用isset()。我會用更普通的東西,比如server.php?saveEvent=true,這樣你確定saveEvent即將被設置。

1

嘗試使用的對象,而不是在你的數據

data: {myEvent:myEvent},