javascript - AJAX PHP,在按钮上单击将变量从javascript提示传递给php脚本以设置cookie?

标签 javascript php jquery ajax

这里是新手。我最近只是为了学习目的而尝试使用 ajax 和 php,我有这个简单的 html:

<button type="button" id="setc">Set Cookie</button>

单击时我想请求一个变量名和值,这样我就可以将它传递到我的 php 脚本中,这是我的 js 代码:

$("#setc").click(function(){
    var cookieVar = prompt("Enter a cookie variable","");
    var cookieVal = prompt("Enter the variable's value","");
    $.ajax({
        url:'setcookie.php',
        type: 'POST',
        data: "cookieVar="+cookieVar+"&cookieVal="+cookieVal,
        success:function(data){
            console.log(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            console.log(textStatus+errorThrown);
         }
    });
});

这是我的 php 脚本:

<?php
    $cookieVar="";
    $cookieVal="";
    echo setcookie($cookieVar,$cookieVal);
?>

但是当我点击按钮时出现了这个错误:

警告:D:\xampp\htdocs\phpcustomsite\setcookie.php 中的 Cookie 名称不能为空 4

我怎样才能让它发挥作用?

最佳答案

我能想到的四个问题,都是PHP:

  1. 您的 PHP 脚本尝试使用 $cookieVar$cookieVal 而未声明它们。 PHP 不知道这些是什么

  2. setcookie 尝试设置 http header 。 echo 尝试向浏览器输出内容。您不能在输出内容后设置标题(除非您有一些缓冲区设置允许这样做)。在这种情况下,这可能不是问题(因为内部函数先运行),但为了安全起见,我会先设置 cookie,然后在单独的行上回显。

  3. setcookie 不返回 cookie 值,因此如果您尝试使用 echo setcookie(...) 获取它,它不会工作。如果成功设置 cookie,该函数返回 true,否则返回 false

  4. 如果您打算向浏览器发送内容(一些 HTML),请只使用 PHP 结束标记 ?> 之后。否则使用结束标记会增加将不需要的空格和换行符(无论后面是什么)发送到浏览器的可能性。

将您的 PHP 修改为:

<?php
//capture values sent by the browser
$cookieVar = $_POST['cookieVar'];
$cookieVal = $_POST['cookieVal'];

//set cookie and send result
if(setcookie($cookieVar,$cookieVal)===true){
    echo "Successfully set cookie $cookieVar to $cookieVal";
}
else{
    echo "Failed to set cookie $cookieVar to $cookieVal"
}

注意,没有结束 ?>

关于javascript - AJAX PHP,在按钮上单击将变量从javascript提示传递给php脚本以设置cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38365116/

相关文章:

php - ajax登录成功数据但不重定向到索引页面

php - zend View : bootstrap(view) or bootstrap(layout)

javascript - 如何在 Electron 项目中实现 nfc 阅读器 (ACR122)?

javascript - 从浏览器中删除 SVG 元素的交互式方式

javascript - Formik React 使用 2 个按钮(提交和保存)提交表单 - 保存按钮不触发验证

php - 谷歌地图地理定位不请求许可

jquery - 无法使用 css 类更改颜色

javascript - 无法加载我的谷歌地图小部件。它工作得很好,直到我决定将其隐藏(使用 .hide)

javascript - 使用 Typeahead.js 和 JSON 键值更新隐藏的输入字段

javascript - 在javascript中附加用户输入