AJAX PHP,在按钮上单击将变量从javascript提示符传递到PHP脚本以设置cookie?
我是新手。我最近正在试验ajax和php,只是为了学习,我有一个简单的html:AJAX PHP,在按钮上单击将变量从javascript提示符传递到PHP脚本以设置cookie?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我是新手。我最近正在试验ajax和php,只是为了学习,我有一个简单的html: <button type="button" id="setc">Set Cookie</button> 下面是我的php脚本: <?php $cookieVar=""; $cookieVal=""; echo setcookie($cookieVar,$cookieVal); ?> 但是当我点击按钮时,它给了我这个错误: “警告:第4行的D:\xa
<button type="button" id="setc">Set Cookie</button>
下面是我的php脚本:
<?php
$cookieVar="";
$cookieVal="";
echo setcookie($cookieVar,$cookieVal);
?>
但是当我点击按钮时,它给了我这个错误:
“警告:第4行的D:\xampp\htdocs\phpcustomsite\setcookie.php中的Cookie名称不能为空”
如何使其工作?使用PHP,我可以想到四个问题:
$cookieVar
和$cookieVal
而不声明它们。PHP不知道这些是什么setcookie
尝试设置http头<代码>回显尝试将内容输出到浏览器。输出内容后不能设置标题(除非您有允许此操作的缓冲区设置)。在这种情况下,这可能不是问题(因为内部函数首先运行),但为了安全起见,我会先设置cookie,然后在单独的一行上回显setcookie
不会返回cookie值,因此,如果您试图使用echo setcookie(…)
获取cookie值,它将无法工作。如果成功设置cookie,该函数返回true
,否则返回false
?>
。否则,使用结束标记会增加向浏览器发送不需要的空格和换行符(后面的内容)的可能性<?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"
}
在ajax中,最好使用:
$.ajax({
url:'setcookie.php',
type: 'POST',
data: {cookieVar: cookieVar,
cookieVal:cookieVal
},...
以及您的php setcookie.php。
我想,
jQuery.ajax
会接受一个查询字符串作为数据的值。它不一定是一个对象。从docs“Type:PlainObject或String或Array.Data发送到服务器。如果不是字符串,则转换为查询字符串”。资料来源:是的,可以用不同的方法使用数据,但是这样更好、更快、更清晰。但是你知道OP的方法是错误的。。我认为错了
太过分了,因为文档说它没问题,这就是我发表评论的原因。我尝试了一个ajax,它使用的数据与Twirlman使用的数据相同。。。如果变量有空间,它就不起作用。如果我使用阵列,它就可以工作!!这是一个很好的观点,另一种方法对您不起作用,因为查询参数需要进行uri编码(请参阅)。当您使用对象表示法时,jQuery
会为您执行此操作。所以,另一种方法没有错,但你的建议更容易使用:-)@Twirlman,不客气。如果我的回答有助于解决您的问题,请选择它(如果您愿意,请向上投票)。
$.ajax({
url:'setcookie.php',
type: 'POST',
data: {cookieVar: cookieVar,
cookieVal:cookieVal
},...