2012-11-05 70 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},