【问题标题】:JQuery post not running code in PHP fileJQuery post没有在PHP文件中运行代码
【发布时间】:2017-12-02 08:02:58
【问题描述】:

我有一个名为 temp.php 的 PHP 文件,其中包含以下代码:

$expiry = 86400;
if (isset($_POST['action'])) {
switch ($_POST['action']) {
    case 'add':

    if (!isset($_COOKIE['ids'])) {

        $value = $_GET['id'];
        $ids = array($value);
        setcookie('ids', serialize($ids), $expiry);

    } else {

        $value = $_GET['id'];
        $ids = unserialize($_COOKIE['ids']);
        if (!in_array($value, $ids)) {

            array_push($ids, $value);
        } 
        setcookie('ids', serialize($ids), $expiry);
    }
    break;
}

我使用$.POST('temp.php', {'action': 'add'}, function(data)) 运行此代码。

基本上在单击按钮时,我执行 post 函数,并希望将 URL 参数中的 id 添加到 cookie 中的现有数组中,否则创建一个数组。但是我可以看到正在创建的任何 cookie。即使我唯一的代码是 setcookie(...)

【问题讨论】:

  • 但是如果您将请求作为 POST 发送,那么 $_GET 将为空...
  • 即使我文件中的唯一代码是 setcookie($name, $value, $expiry),也没有添加 cookie @Technoh
  • 您需要在 ajax 调用中向服务器发送一个 id:$.POST('temp.php?id=.....', {'action': 'add'}, function(data))
  • 尝试在isset($_POST['action']) 之后添加一个error_log 调用,以查看PHP 文件是否正确加载。如果您没有从您的 error_log 电话中得到任何信息,那么您的错误就在其他地方。
  • 你有一个大括号,break;后面需要一个

标签: javascript php jquery cookies


【解决方案1】:

您将 cookie 设置为过期:格林威治标准时间 1970 年 1 月 2 日星期五 00:00:00。

使用您的变量 $expiry 消除或将其更改为时间戳,setcookie() 想要整数的 Unix 时间戳,而不是时间量。 PHP: setcookie() man page

setcookie('ids', serialize($ids), time() + 86400)  // 1 Day;

并在break; 之后修复你丢失的大括号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 2021-08-12
    • 2018-08-12
    相关资源
    最近更新 更多