Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
链接重定向前ajax调用中的Php会话不';行不通_Php_Ajax_Session - Fatal编程技术网

链接重定向前ajax调用中的Php会话不';行不通

链接重定向前ajax调用中的Php会话不';行不通,php,ajax,session,Php,Ajax,Session,我有一个主页,你可以在那里填写一些数据。单击“create”链接后,它将调用ajax将新记录插入mysql数据库(使用主页面中的数据)。我插入这个新记录的mysql表有一个自动递增主键,我需要知道“create”链接重定向的页面上的这个键。因此,为了在一个简短的简化示例中展示它,我有如下内容: php有一个创建链接 index.php还有这个jquery$(“#create”).click($.ajax({url:“create.php”,cache:false,data:{…index.php

我有一个主页,你可以在那里填写一些数据。单击“create”链接后,它将调用ajax将新记录插入mysql数据库(使用主页面中的数据)。我插入这个新记录的mysql表有一个自动递增主键,我需要知道“create”链接重定向的页面上的这个键。因此,为了在一个简短的简化示例中展示它,我有如下内容:

php有一个创建链接 index.php还有这个jquery$(“#create”).click($.ajax({url:“create.php”,cache:false,data:{…index.php中的一些数据…}))

create.php将记录插入数据库,然后执行此$_会话[“id”]=mysql_insert_id()

new.php需要从$\u会话[“id”]获取此id

当我试图在单击事件之外调用ajax(插入记录)时(在加载主页之后),在我实际单击链接之前,它工作得非常好。然而,这种方式是随机的。有时它会,有时它不会,而且它从来没有在谷歌Chrome中以这种方式工作过

我在文档的开头正确地使用了session_start(),所以这没有问题


非常感谢您的帮助,我为此苦苦挣扎了很多天,最后我发现问题来自单击事件中的ajax调用位置,但我不知道如何解决它。我想我缺少了一些关于页面重定向和单击事件如何与ajax协同工作的知识。

首先必须在index.php页面中启动会话,以便new.php和create.php将在会话cookie中接收会话ID。理论上,您可以调用$.ajax,然后立即更改窗口位置。但是,这并不能保证create.php作为完成的执行(即,创建所需的行并将所需的数据插入会话中,该会话应存储在数据库中)。这可能导致您正在经历的比赛状态

要解决此问题,只需在Ajax调用成功的函数中更改窗口URL,如:

$("#create").click($.ajax({ url: "create.php", cache: false, data: { ... some data from index.php ... }, success: function() { window.location = 'new.php'; } }));

您确信在ajax请求完成之前不会忘记阻止click事件吗?(例如:$()。单击(函数(){return false;});)