我的PHP中有以下jQuery函数:
echo '
function myFunction() {
return $.ajax({
type: "POST",
url: "mypage.php",
data: "name=John&location=Boston"
});
}
$.when(myFunction()).then(function(data) {
// handle data return
someOtherFunction(data);
// need to set "data" var into PHP SESSION
}, function(error) {
// handle ajax error.
});
';
在我的AJAX执行majic后,它返回一个值(数据),我将其传递给另一个函数。另外,我需要能够将该值设置为PHP会话: $ _ SESSION ['项目'] [数据] =数据;
我该怎么做?由于某些原因,PHP和JS之间的切换使我感到困惑......
答案 0 :(得分:2)
这是不可能的,因为JS现在在客户端。您无法直接设置PHP变量。
你可以做的是使用document.cookie
在JS中设置一个cookie,然后在下一页请求PHP可以通过$_COOKIE
获取它。
您也可以在$_SESSION
内设置mypage.php
变量 - 如果它们共享同一会话,则可能会更加容易。
答案 1 :(得分:1)
首先,你必须要知道javascript是一种客户端语言,PHP是服务器端。 PHP所做的一切,它在页面加载时执行,并在页面加载后停止。 Javascript接管了。
你可以做的是创建mypage,它也创建$_SESSION['project']['data']
作为可以与PHP一起使用的关联数组。你不想做的是将javascript数组设置为PHP变量。并非默认情况下这是错误的,但由于您尝试使用PHP设置数据,我猜你也会使用PHP获取数据,因此该会话中的javascript数组将毫无用处。
所以在mypage.php中你可能有类似的东西:
echo json_encode($result);
其中$result
是脚本返回的数据数组。你可以简单地在上面添加一行说:
$_SESSION['project']['data'] = $result;
并将数据存储在会话中以便在其他页面上使用。
答案 2 :(得分:1)
令人困惑,因为你正在混合两者,试着在代码中保持明显的分离。不要回显你的jQuery脚本,只需关闭php标签,这也会使语法高亮显示工作。
至于设置会话变量,在将数据写入输出之前,需要在mypage.php的服务器端执行此操作。这将在将数据传递到客户端jQuery脚本进行处理之前发生。