iT邦幫忙

0

ajax 傳輸同一個頁面

  • 分享至 

  • xImage

各位大大好:
請問ajax可以傳輸到同一個頁面嗎?想說要切換使用者名字$_SESSION['CNAME']
若ajax傳到另一個頁面是可以的,但同一個頁面$_POST['chauditor']好像會讀取不到
謝謝

auditor2.php

session_start();
$inactive = 7200; 
ini_set('session.gc_maxlifetime', $inactive); 
if (isset($_SESSION['testing']) && (time() - $_SESSION['testing'] > $inactive)) {
    session_unset();
    session_destroy(); 
}

else{
if (!isset($_SESSION)) { 
session_start();
if (!empty($_POST['chauditor'])){
//用ajax應該chauditor會取到值,讓$_SESSION['CNAME']變更名字,但好像不行?
$_SESSION['CNAME']=$_POST['chauditor']; 
}
else {
echo"沒有值";
}
}
}
$_SESSION['testing'] = time(); // Update session
?>

<?php
if($_SESSION['CNAME']==""||$_SESSION['identity']!=="1301"){
header("Location:login.php");
}
?>

<li><a href="javascript:void(0)" onclick="change_audit('<?php echo $saduitor; ?>')"><span><?php echo $saduitor; ?></span></a></li>

js

function change_audit(aduit){
var change_aduitor=aduit;
$.ajax({
        url:"auditor2.php",
        type:"POST",
        data: {
            "chauditor":change_aduitor,
        },
        error: function(jqXHR, textStatus, errorThrown) {
    alert(jqXHR.responseText);
    },
        success: function(data) {
        console.log(data);
        location.reload();
        }
    });
}
先看看前端是不是 POST 你要的資料過去
因為沒道理 get 可以 post 不行
mayyola iT邦研究生 2 級 ‧ 2020-06-08 11:35:04 檢舉
Undefined index: chauditor

用get好像可以達到想要的,不過網址就會長尾巴..
<li><a href="auditor.php?user=<?php echo $saduitor; ?>"><span><?php echo $saduitor; ?></span></a></li>

<?php
if((!empty($_GET['user']))&& $_SESSION['CNAME']!==$_GET['user']){
$_SESSION['CNAME']=$_GET['user'];
header("Refresh:0");
}
?>
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2020-06-08 13:30:34
最佳解答

其實從你的php來看,就不太適合給ajax使用了。
畢竟你後面還有一個

header("Location:login.php");

跟一段html的應用

而且你還在取到值後,又做了一段reload。
我不懂你這段的意思是什麼?為何要這樣做?
因為當你reload後。你原本傳送的post值就消失了。
有點多此一舉的感覺。

從這邊來看,你似乎並不太懂ajax的應用方式處理
但看你有給與session的值。
理論上你該拿session來判斷才對。
雖然這也不算是正規的用法就是了。

mayyola iT邦研究生 2 級 ‧ 2020-06-08 14:01:42 檢舉

浩瀚大好:改好了~謝謝~~

<?php
session_start();
if (isset($_POST['chauditor'])){
$_SESSION['CNAME']=$_POST['chauditor'];
echo $_SESSION['CNAME'];
exit;
}
?>

js

function change_audit(aduit){
var change_aduitor=aduit;
$.ajax({
  type:"POST",
  data: {
  "chauditor":change_aduitor,
        },
    error: function(jqXHR, textStatus, errorThrown) {
    alert(jqXHR.responseText);
    },
        success: function(data) {
        console.log(data);
        location.reload();
     }
    });
}

只是拿來sessio的更換嘛?
這樣倒是可以。

mayyola iT邦研究生 2 級 ‧ 2020-06-08 16:20:10 檢舉

對的/images/emoticon/emoticon41.gif

我要發表回答

立即登入回答