这里是新手。我最近只是为了学习目的而尝试使用 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:
您的 PHP 脚本尝试使用
$cookieVar
和$cookieVal
而未声明它们。 PHP 不知道这些是什么setcookie
尝试设置 http header 。echo
尝试向浏览器输出内容。您不能在输出内容后设置标题(除非您有一些缓冲区设置允许这样做)。在这种情况下,这可能不是问题(因为内部函数先运行),但为了安全起见,我会先设置 cookie,然后在单独的行上回显。setcookie
不返回 cookie 值,因此如果您尝试使用echo setcookie(...)
获取它,它不会工作。如果成功设置 cookie,该函数返回true
,否则返回false
。如果您打算向浏览器发送内容(一些 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/