为什么它被设置已经被重定向后,由JavaScript

问题描述:

我有两个页面是skytrip.localhost/SearchResult所和skytrip.localhost/bookingInfo为什么它被设置已经被重定向后,由JavaScript

在页面SearchResult所,我让Ajax请求失去了PHP会话变种,那么它是重定向到pageInfo。在ajax请求中,我设置了一个sesion值,然后我想在页面bookingInfo中获取此值。但我无法得到这个价值。当我转储$ _SESSION时,我发现这个值没有被设置,并且属于这个值的session var不存在,但是其他以前的会话值已经被看到。

Ajax请求调用PHP代码,并设值为会话

$session->set(Fly_Constant::SESSION_BOOK_PRICE_VERIFIED_SOLUTION_PARAMETER, "yunuz"); 

响应后,重定向到页面bookingInfo

window.location.href = PageInitialData.BASE_URL +"bookingInfo"; 

我试图让这个值

$bookPriceVerifyResponse = $session->get(Fly_Constant::SESSION_BOOK_PRICE_VERIFIED_SOLUTION_PARAMETER,1800); 
+0

您使用的是什么CI版本? – Nassim

+0

CI版本是2.1.3 –

+0

我不知道CI3,但关于CI2.x该会话是越野车,并没有安全(它使用cookie来保存会话数据),所以我使用这个会话扩展,而不是它做得很好https ://github.com/bcit-ci/CodeIgniter/wiki/EckoSession希望帮助 – Nassim

如果您不要使用框架会话机制,请确保您在使用$ _SESSION之前先有session_start()调用,否则这些数据将会丢失。

+0

非常感谢你的有趣的。当我看到previoust会话值时,我看不到会话var /值设置最后一个重定向。虽然我看到这个值$ _SESSION之前重定向,在重定向之后,我在$ _SESSION中看不到这个值 –

+0

只需要尝试一下答案就可以看到,你需要调用session_start()来加载和保存页面之间的会话信息,否则S_SESSION会 – GolezTrol

+0

是的,我发现问题,问题是如果$ _SESSION没有设置,我会调用session_start,但是在将该值设置为session之前,我在其他函数中调用了session_write_close,在这种情况下,会话不存在,$ _SESSION不是empy。因为session不存在,所以会出现这个问题。为了解决这个问题,我在session_status()时调用了session_start()!== PHP_SES SION_ACTIVE。 –

尝试完整的URL和相对URL在您的重定向,如果我记住正确,也会影响SESSION。