2017-08-09 91 views
0

我想將會話變量存儲到普通變量並使用ajax我需要將值發送到下一頁,但它給了我ajax代碼中的錯誤。下面是我的代碼如何將會話變量發送到下一頁?

的index.php

$OTP = $_SESSION['smsgatewaycenterotp']; 
echo $OTP; 

的Ajax功能

<script type="text/javascript"> 
$('#btnonOtp').click(function() 
{ 
    var otp = $('$OTP').val(); 

    $.ajax({ 
     url: "sms.php", 
     method:'POST', 
     data: 
     {mobile: $('#mobile').val(), 
     otp:otp}, 
     success: function(msg) 
     { 
      alert('OTP Sent'); 
      console.log(msg); 
     }    
    }); 
}); 

</script> 

Sms.php

<?php 
include 'send.php'; 

session_start(); 



var_dump($_POST); 
console.log(msg); 
echo $_POST['mobile']; 

$OTP = $_POST['otp']; 
$number = $_POST['mobile']; 

//$text = 'Hi There, how are you?'; 
$sms_api_result = sms_Send($number, 'Please do not share the one time password with anyone. Your One Time password is: '.$OTP,$debug); 

?> 

能任何人都能幫我解決這個問題。

+0

它給你什麼錯誤? –

+1

在你的php文件中你使用過'session_start();'? – Beginner

+0

那麼,你在哪裏引用ajax中的'$ OPT'? – Andy

回答

0

var otp = $('$OTP').val();是做什麼用的?如果您希望讀取PHP $OPT的價值,那麼根本不會。

您沒有在您的ajax中引用PHP $OPT值。

嘗試:

$.ajax({ 
    url: "sms.php", 
    method:'POST', 
    data: 
    {mobile: $('#mobile').val(), 
    otp: <?php echo $OPT; ?>}, 
    success: function(msg) 
    { 
     alert('OTP Sent'); 
     console.log(msg); 
    }    
}); 

這意味着,當你郵寄到sms.php它會在後數據opt:,包含$OPT值。

您的腳本sms.php在讀取ajax調用時將能夠讀取$_POST['opt']

順便說一句 - 有你sms.phpconsole.log線其他錯誤 - 這是一個JavaScript函數,不會在PHP工作(你仍是<?php ?>標籤內)

測試這一點修改sms.php到剛纔這段代碼是:當你的Ajax請求,你應該得到一個彈出(alert('OPT Sent'

<?php 
if (isset($_POST['opt'])) { 
    echo $_POST['opt']; 
} else { 
    echo "opt not set<br>"; 
    var_dump($_POST); 
} 
?> 

;在瀏覽器中。如果你打開了控制檯,它應該顯示$_POST['opt']的值,或者顯示沒有設置的消息。如果說「選擇不設置」則意味着這條線在你的Ajax調用不發送正確的值:

otp: <?php echo $OPT; ?> 

但是,你可以工作了這一點通過查看源頁面上,其中JavaScript是(index.php )。如果它是空白或沒有值,則它將不在sms.php的發佈數據中可用。

你也必須明白,沒有「下一頁」。您發佈的代碼只需從index.phpsms.php發出ajax發佈請求。它不會「加載」sms.php,或將用戶重定向到那裏。由於您的ajax成功函數中的console.log語句,您將在瀏覽器控制檯中看到唯一的輸出。

+0

Andy如果我們使用這個<?php echo $ OPT; ?>它不會將數據發送到下一頁。我已經試過了。 – Riteu

+0

什麼是「下一頁」?因爲你所有的代碼都會讓ajax重獲'sms.php'。它不會在任何地方重定向,也不會讓用戶離開當前頁面。 – Andy

+0

在索引頁面中,我可以看到該值,我需要該值來傳遞下一個稱爲sms.php的頁面並捕獲該值。並且該值將在函數中傳遞。但在我的情況下,這個價值並沒有通過,而是一片空白。 – Riteu

0

如果你想獲得在同一網站的另一個頁面的會話值,那麼你可以通過使用$_SESSION變量得到它。沒有必要使用ajax。下面是示例

第2頁

session_start(); 
$session_value = ''; 
if(isset($_SESSION['smsgatewaycenterotp'])){ 
$session_value .=$_SESSION['smsgatewaycenterotp']; // if it is string 
} 
echo $session_value; // Out put some value 

isset() PHP的內置功能將檢查會話值,所以如果有值,則if語句將是真正的和值將被分配給$session_value變量其他明智的變量將是空的。

0

會話變量可以在項目的每一個頁面即可到達,一旦你開始了會議

session_start(); 

瞭解如何處理存儲使用$ _SESSION在閱讀更多關於它: http://php.net/manual/en/book.session.php

相關問題