jQuery / PHP混淆了

时间:2011-05-10 16:30:04

标签: php jquery

我的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之间的切换使我感到困惑......

3 个答案:

答案 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脚本进行处理之前发生。