2013-03-22 127 views
-1

解決它如何動態地添加JavaScript到PHP頁面,PHP代碼在它

<?php $startPage = $_COOKIE["currentPage"];?> 
<script type="text/javascript"> 
var startPageVal = <?php echo $startPage; ?>; 
<?php echo base64_decode($pajinate_js); ?> 
</script> 

而$ pajinate_js是下面的代碼,而是起始頁:startPageVal


我有麻煩搞清楚如何從表單添加JavaScript。 基本上我有如下代碼(忽略腳本本身,而不是一條線(起始頁):

$(function(){ 
/* initiate the plugin */ 
$("div.holder").jPages({ 
    containerID : "content", 
    perPage  : 2, 
    startPage : <?php echo $_COOKIE["currentPage"]; ?>, 
    startRange : 1, 
    midRange  : 5, 
    endRange  : 1, 
    }  
}); 

如果我把PHP頁面裏面的代碼,我馬上就得到起始頁:3(或任何價值,我得到),但如果我在瀏覽器中源通過文本區做動態的,我得到的純文本:

startPage : <?php echo $_COOKIE["currentPage"]; ?> 

這將作爲一個結果,導致整個事情不工作我使用BASE64_DECODE和BASE64_ENCODE通過數據庫來傳遞,否則MySQL的INSERT語句不起作用。

希望你明白我的意思。有人知道如何解決它嗎?

+0

有點困惑 - 你在暗示你已經存儲在數據庫中的PHP代碼,並試圖對其進行評估後*** ***查詢?因爲這是一個非常糟糕的做法。您的cookie的價值應該在您將該JS寫入數據庫的任何文件中解決。 – Emissary 2013-03-22 16:12:14

+0

沒有什麼太複雜的,因爲你認爲。我所要做的就是將javascript添加到數據庫,以便它可以在頁面上自定義,具體取決於頁面上的用戶。 無論如何,我通過設置javascript var然後在代碼中使用它來代替startPage來解決問題:<?php echo $ _COOKIE [「currentPage」]; ?>我設置它var jstartPage = <?php echo $ _COOKIE [「currentPage」];並在代碼startPage:jstartPage,它的工作。 – 2013-03-22 16:32:26

回答

1

的人,我已經測試了這個例子,它的工作原理,嘗試合併PHP和JavaScript這樣的:

<html> 
<form method="post" > 
<input type="text" value="10" name="input"> 
<input type="submit" value='submit'> 
</form> 

<script type="text/javascript"> 
    var x = <?php echo $_POST['input']; ?> ; 
    alert(x); 
</script> 
</html> 
+0

我必須通過數據庫來完成。 Sql插入引發錯誤。所以我編碼時插入和解碼時,頁面上的回聲,但它寫<?php echo $ _COOKIE [「currentPage」]; ?>,而不是我應該擺脫它的價值。 – 2013-03-22 15:52:23

0

這取決於你使用引號。

<?php 

$js = '$(function(){ 
/* initiate the plugin */ 
$("div.holder").jPages({ 
    containerID : "content", 
    perPage  : 2, 
    startPage : '.$_COOKIE["currentPage"].', 
    startRange : 1, 
    midRange  : 5, 
    endRange  : 1, 
    }  
});'; 
echo $js; 

?> 
+0

我必須通過數據庫來完成。 Sql插入引發錯誤。所以我編碼時插入和解碼時,頁面上的回聲,但它寫<?php echo $ _COOKIE [「currentPage」]; ?>,而不是我應該擺脫它的價值。 – 2013-03-22 15:51:55

+0

我想我不明白你想要做什麼。如果我不得不把這個放在數據庫中,取決於使用的方法,我會使用var和mysqli_real_escape_string($ js)或PDO :: quote($ js)。 – 2013-03-22 15:58:32

0

試試這個:

<?php  
    $js = '<script>$(function(){ 
    /* initiate the plugin */ 
    $("div.holder").jPages({ 
     containerID : "content", 
     perPage  : 2, 
     startPage : '.$_COOKIE["currentPage"].', 
     startRange : 1, 
     midRange  : 5, 
     endRange  : 1, 
     }  
    });<script>'; 
    echo $js; 
?> 
0

好吧,我覺得我得到的是什麼問題 - 對不起它花了幾分鐘才平息你已經存儲在數據庫中的腳本/模板或任何這需要從一個PHP變量的值 - 只有你,你寫入數據庫之前,因爲它是一個cookie值是特定於誰正在運行腳本的用戶解決該變量。所以,你已經寫PHP代碼數據庫期待它已運行數據庫查詢後評估?我對麼?

這不是它的工作方式 - 雖然它是「技術上」可以一起破解這種方式將會非常不好的做法,所以......

你真正想要做的是什麼即時創建腳本。例如,你的腳本可以被存儲爲一個標籤的一些描述一個字符串,你換了以後:

$(function(){ 
    /* initiate the plugin */ 
    $("div.holder").jPages({ 
    containerID : "content", 
    perPage  : 2, 
    startPage : %%COOKIEVAL%%, 
    startRange : 1, 
    midRange  : 5, 
    endRange  : 1, 
    }  
}); 

然後從數據庫中檢索此之後,你可以運行這樣的事情:

$script = val_from_db(); // whatever 
echo str_replace('%%COOKIEVAL%%', $_COOKIE["currentPage"], $script);