ajaxpost后为空php变量

ajaxpost后为空php变量,php,jquery,ajax,json,deployment,Php,Jquery,Ajax,Json,Deployment,我的脚本文件中有以下代码: $.ajax({ url: "server.php?saveEvent", data: "myEvent=" + JSON.stringify(myEvent), dataType: "json", type: "post", success: function (data) { if (data) { $("#log").append("<br />Evenement sav

我的脚本文件中有以下代码:

$.ajax({
    url: "server.php?saveEvent",
    data: "myEvent=" + JSON.stringify(myEvent),
    dataType: "json",
    type: "post",
    success: function (data) {
        if (data) {
            $("#log").append("<br />Evenement saved.");
        }
    }
});
当我在本地主机上测试时,一切正常。不幸的是,在部署之后, $myEvent 空无一人

使用FireHP,我测试了变量中的内容,并查看了发送的标题。该对象被发送到服务器,但php仍然认为它是一个空变量

有没有关于如何做到这一点的想法?这是php版本还是json问题

编辑:PHP版本=5.2.17/json已启用

EDIT2:将te url更改为?saveEvent=1没有更改任何内容


Edit3:我意识到创建get和post有点奇怪,我会尝试更改它,但是get/post应该不是问题,我认为使用
server.php?saveEvent
的行为是由您的服务器定义的吗?这样做的行为可能因服务器或PHP版本而异。PHP变量将设置为什么?使用那种速记法不太清楚,所以我会像你一样使用
isset()
。我会使用一些更普通的东西,比如
server.php?saveEvent=true
,这样您就可以确定
saveEvent
将被设置。

仅使用
server.php?saveEvent
的行为是由您的服务器定义的吗?这样做的行为可能因服务器或PHP版本而异。PHP变量将设置为什么?使用那种速记法不太清楚,所以我会像你一样使用
isset()
。我会使用一些更普通的东西,比如
server.php?saveEvent=true
,这样您就可以确定
saveEvent
将被设置。

您的uri包含一个GET参数,
saveEvent
。您只检查
POST
数据

尝试检查此项:
$\u GET['saveEvent']

即使如此,该参数也没有为其指定值,也许可以将url更改为
?saveEvent=1

也没有理由使用2个if语句:

if (isset($_GET['saveEvent'] && isset($_POST['myEvent']))
{
    //do stuff
}
由于似乎不仅仅是
GET
POST
问题,您可能希望在url的末尾添加一个符号(
&
):看看您的控制台,XHR请求只是将POST参数粘贴在url的末尾,因此uri看起来像以下url之一:

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
基本上,坚持使用一种方法,POST或GET,并确保各个参数按照它们应该分开的方式分开。
我不确定这是否是问题所在,但请尝试
var\u dump
-使用
$\u请求
超级全局,以及
$\u GET
$\u POST
您有什么…

您的uri包含一个GET参数,
saveEvent
。您只检查
POST
数据

尝试检查此项:
$\u GET['saveEvent']

即使如此,该参数也没有为其指定值,也许可以将url更改为
?saveEvent=1

也没有理由使用2个if语句:

if (isset($_GET['saveEvent'] && isset($_POST['myEvent']))
{
    //do stuff
}
由于似乎不仅仅是
GET
POST
问题,您可能希望在url的末尾添加一个符号(
&
):看看您的控制台,XHR请求只是将POST参数粘贴在url的末尾,因此uri看起来像以下url之一:

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

基本上,坚持使用一种方法,POST或GET,并确保各个参数按照它们应该分开的方式分开。
我不确定这是否是问题所在,但请尝试
var\u dump
-使用
$\u请求
超级全局,以及
$\u GET
$\u POST
你有什么…

尝试在数据中使用对象而不是字符串

data: {myEvent:myEvent},

尝试在数据中使用对象而不是字符串

data: {myEvent:myEvent},

您安装了什么版本的php?您可能没有json扩展支持。您正在发出post请求,但上面有一个get条件。您安装了什么版本的php?可能是您没有启用json扩展。您正在发出post请求,但上面有一个get条件?@Tim:最终是什么解决了这个问题?这是一个丢失的符号,还是其他所有的东西?是的,符号似乎有帮助,尽管它令人困惑,因为post数据应该在正文中。我还去掉了额外的get参数。是的,我知道这有点让人困惑,但试着看看firebug/chrome开发工具中的标题:即使是post请求也会是这样:
someurl/?param=value&some=more¶ms=too
。@Tim:最终是什么解决了这个问题?这是一个丢失的符号,还是其他所有的东西?是的,符号似乎有帮助,尽管它令人困惑,因为post数据应该在正文中。我还去掉了额外的get参数。是的,我知道这有点让人困惑,但试着看看firebug/chrome开发工具中的标题:即使是post请求也会是这样:
someurl/?param=value&some=more¶ms=too
。。。