英文:
PHP AJAX response.status return undefined
问题
Here is the translation of the non-code part of your text:
我确实有两个问题,第一个是当我尝试评估 response.status 时,它显示为 undefined;第二个是我的 "$_SESSION['promo-code'] = $arr" 也没有被创建。当输入促销码时,我得到以下内容:
AJAX
function applyPromo(){
var promo = $("#promo-code-value").val().trim();
console.log(promo);
$.ajax({
url: "get-promo.php",
type: "POST",
data: { getpromo: promo },
success: function (response) {
console.log("%j", response);
console.log(response.status);
if (response.status === "success") {
swal("Good job!!",
"Promo code applied Successfully!",
"success"
).then(() => {
reloadPage();
});
} else {
swal("Humm...", "Promo code no longer valid", "error");
}
}
})
}
PHP
if(isset($arr)){
//将数组添加到会话变量中
//**每次只能应用一个代码。会覆盖之前的
$_SESSION['promo-code'] = $arr;
//成功响应
echo json_encode(array(
'status' => 'success',
'message' => $arr, //仅用于调试,将被替换为成功消息
));
} else {
echo json_encode(array(
'status' => 'error',
'message' => 'error message'
));
}
这只是为了学校项目。谢谢!
我尝试将 "success" 切换为 "error",但它似乎根本不进行评估。我对 Ajax 或 PHP 不熟悉,但我相信我曾经看到其他人是这样做的。
英文:
I have two problems really here, the first one being that when I try to evaluate response.status I get undefined and the second one being that my "$_SESSION['promo-code'] = $arr" is also not being created. When entering a promo code, I get the following :
AJAX
function applyPromo(){
var promo = $("#promo-code-value").val().trim();
console.log(promo);
$.ajax({
url:"get-promo.php",
type: "POST",
data:{ getpromo : promo},
success: function(response){
console.log("%j", response);
console.log(response.status);
if(response.status === "success"){
swal("Good job!!",
"Promo code applied Successfully!",
"success"
).then(() => {
reloadPage();
});
}else{
swal("Humm...", "Promo code no longervalid","error");
}
}
})
}
PHP
if(isset($arr)){
//Add array to session variable
//** Only one code can be apply at the time . will override
$_SESSION['promo-code'] = $arr;
//Success response
echo json_encode(array(
'status' => 'success',
'message'=> $arr, //For debugging only , will be replaced to success message
));
}else {
echo json_encode(array(
'status' => 'error',
'message'=> 'error message'
));
}
It's only for a school project. Thanks!!
Ive tried switching "success" to "error" but it is simply not evaluating .I'm new to ajax or php but I believe to have seen others makes it work that way.
答案1
得分: 0
问题之一是响应是JSON格式的。因此,您必须将其转换为JS对象,然后您就可以获取状态。以下是更新后的代码:
function applyPromo(){
var promo = $("#promo-code-value").val().trim();
console.log(promo);
$.ajax({
url:"get-promo.php",
type: "POST",
data:{ getpromo : promo},
success: function(response){
let response = JSON.parse(response);
console.log("%j", response);
console.log(response.status);
if(response.status === "success"){
swal("Good job!!",
"Promo code applied Successfully!",
"success"
).then(() => {
reloadPage();
});
}else{
swal("Humm...", "Promo code no longer valid","error");
}
}
})
}
问题之二是,您没有使用session_start()
。以下是更新后的代码:
if(isset($arr)){
//将数组添加到会话变量
//** 一次只能应用一个代码,将覆盖
session_start();
$_SESSION['promo-code'] = $arr;
//成功响应
echo json_encode(array(
'status' => 'success',
'message'=> $arr, //仅用于调试,将替换为成功消息
));
}else {
echo json_encode(array(
'status' => 'error',
'message'=> 'error message'
));
}
英文:
The problem one is that response is in JSON. So you have to convert it into JS object and then you can get status. Here is the updated Code:-
function applyPromo(){
var promo = $("#promo-code-value").val().trim();
console.log(promo);
$.ajax({
url:"get-promo.php",
type: "POST",
data:{ getpromo : promo},
success: function(response){
let response = JSON.parse(response);
console.log("%j", response);
console.log(response.status);
if(response.status === "success"){
swal("Good job!!",
"Promo code applied Successfully!",
"success"
).then(() => {
reloadPage();
});
}else{
swal("Humm...", "Promo code no longervalid","error");
}
}
})
}
The second problem is that, you are not using session_start(). Here is the updated code:-
if(isset($arr)){
//Add array to session variable
//** Only one code can be apply at the time . will override
session_start();
$_SESSION['promo-code'] = $arr;
//Success response
echo json_encode(array(
'status' => 'success',
'message'=> $arr, //For debugging only , will be replaced to success message
));
}else {
echo json_encode(array(
'status' => 'error',
'message'=> 'error message'
));
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论