gpt4 book ai didi

javascript - 使用ajax的 session 变量似乎是空的

转载 作者:行者123 更新时间:2023-12-02 17:24:22 24 4
gpt4 key购买 nike

我有一段代码给我带来了麻烦。
我正在尝试从 php 类函数获取订单值:

public function generalSettings(){


$totalprijs = 0;
foreach($_SESSION['items'] as $key => $value){
$products->setProduct($key);
$totalprijs = $totalprijs + ($products->prijs_exBTW * $value);
}


$inclbtw = ($totalprijs * ('1.'.$this->BTWPercnt));
if($totalprijs > $this->franco_vanaf){
$verzendkosten = 0;
}else{
$verzendkosten = $this->verzendkosten;
}

$btw = ($totalprijs + $verzendkosten) * ('0.'.$this->BTWPercnt);

if($totalprijs > $this->franco_vanaf){
$totaalInc = ($totalprijs + $btw);
}else{
$totaalInc = ($totalprijs + $btw + $this->verzendkosten);
}

$return = array(
"subtotaal" => $totalprijs,
"btw" => $btw,
"inclbtw" => $inclbtw,
"verzendkosten" => $verzendkosten,
"totaalInc" => $totaalInc
);
return($return);
}

当我从类中访问此函数时,它可以工作。
当我在结帐中调用使用此函数的其他函数时,它可以工作。

但是当我尝试在 AJAX 处理文件中访问它时,它会显示:

警告:为 foreach() 提供的参数无效

当我调用ajax文件中的函数时,代码如下:

if($isValid == true){
unset($notneeded);
$notneeded = array("ww1","ww2","huisnr","vhuis","companyvat","companyname","tel","firstname","lastname");
foreach($_POST['gegevens'] as $key => $value){
if(in_array($key,$verplichtArray) && (!in_array($key,$notneeded))){
$fields .= "`".$key."`,";
$values .= "'".$value."',";
}
}
$shoppingcar = new Winkelwagen;
$order = $shoppingcar->generalSettings();

$fields .= '`timestamp`,`klant`,`totaal`,`totaalInc`,`verzendkosten`,`status`,`betaalmethode`';
$values .= "now(),'".$acc->id."','".$order['subtotaal']."','".$order['totaalInc']."','".$order['verzendkosten']."','3','".mysql_real_escape_string($_POST['betaalwijze'])."'";

if(isset($_POST['gegevens']['V'])){
$fields .= ',`V`';
$values .= ",'X'";
}

$message = "INSERT INTO order (".$fields.") VALUES (".$values.")";
}

当我从ajax文件调用该函数时, session 似乎是空的但是当我从调用 ajax 文件的文件中调用该函数时,它工作得很好。

谁能解释一下我做错了什么???

编辑

我用来根据请求调用 ajax 文件的 jquery 片段:

$('#afrekenen').click(function(){
clearInterval(myInterval);
var fields = $('.addressform :input');
$.each(fields, function(field,val){
$(val).removeClass('errorInput');
})
var gegevens = {};
var adresform = $('.addressform').serializeArray();
$.each(adresform, function(index, val){
gegevens[this.name] = this.value;
});
if(!$('input[name=payment]:checked').val()){
var betaalwijze = 0;
}else{
var betaalwijze = $('.betaalwijze').val();
}

var voorwaarden = $('input[name=voorwaarden]:checked').val();

$.ajax({
type: 'post',
url: '/inc/afrekenen.php',
data: {"gegevens":gegevens ,"betaalwijze":betaalwijze,"voorwaarden":voorwaarden},
success: function(data) {
response = jQuery.parseJSON(data)
if(response.isValid == false){

$('#errormsg').html('<div class="alert alert-danger">'+
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>'
+response.message+'</div>');

$.each(response.fouteVelden, function(index, object){
$('#'+object+'').addClass('errorInput');
});
}else{
$('#errormsg').html('<div class="alert alert-success">'+
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>'
+response.message+'</div>');
}
}
});
});

如果有ob_start();标签和 session_start();标签

当我尝试 print_r 时,只有与我的类(class)以某种方式链接的 session 返回 1,其余 session 仍然保留

我的代码第一部分中通过 $_SESSION['item'] 的 foreach 不起作用代码的所有其他部分都可以工作

编辑

睡个好觉似乎已经解决了冲突......不知道错误是什么,也不知道如何修复它,但它有效!谢谢您的建议:)

最佳答案

如果/inc/afrekenen.php 与您的类(class)位于同一域中,则 session 是共享的并且 phpsid cookie 会随您的 ajax 请求一起传递。 在这种情况下,唯一的问题是您的 session 未在/inc/afrekenen.php 中启动。

验证 session 是否已在/inc/afrekenen.php 中启动。

关于javascript - 使用ajax的 session 变量似乎是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23626979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com