2013-01-10 49 views
0

我用以下簡單的jQuery代碼來調用一個PHP頁面,並獲得按鈕信息回一個div:我可以在JavaScript中使用PHP值嗎?

<head> 
<script> 
    $(document).ready(function(){ 
    $('#myButtons input:radio').change(function() { 
     var buttonValue = $("#myButtons input:radio:checked").val(); 
     $("#myDiv").load('myPHPfile.php', {selectedButtonValue : buttonValue}); 
    }); 
    }); 
</script> 
</head> 

<body> 
    <div id="myButtons"> 
    <input type="radio" name="category" value="10" />ButtonA 
    <input type="radio" name="category" value="20" />ButtonB 
    </div> 
    <div id="myDiv">Click the button to load results</div> 
</body> 

myPHPfile.php

<?php 
    if($_REQUEST["selectedButtonValue"]) 
    { 
    $buttonPHP = $_REQUEST['selectedButtonValue']; 
    echo "Value button is ". $buttonPHP; 
    } 
?> 

我怎樣才能得到PHP信息裏面的JavaScript,如下:

alert(<?php echo('buttonPHP'); ?>); 

注:下面的代碼顯示的警告框消息,但因爲我需要$ buttonPHP值我不能使用它:

$("#myDiv").load('myPHPfile.php', {selectedButtonValue : buttonValue}, function(data){ alert(data); }); 

我試過在myPHPfile.php $_SESSION,以及所有的jQuery AJAX功能:load()get()post()ajax()方法,他們都不是給裏面的JavaScript的PHP的值。

我看了遍,但找不到答案。

+1

JS運行在客戶端上,PHP運行在服務器上。要麼在構建頁面時將PHP值嵌入到js代碼中,要麼在JS代碼運行時使用AJAX檢索php值。這是你唯一的兩個選擇。 –

+0

簡短的回答不,很長的回答是..如果你的JavaScript是在你的文檔中,而不是一個獨立的js文件,那麼你可以使用標準的PHP內假設它的PHP文件。如果它不是這樣做的話。例如,您可以在js文件上方的文檔中的腳本標記中設置全局樣式var。或者你可以使用php作爲你的js文件,但是使用php擴展名並且在文件的頂部使用javascript頭文件來欺騙它,使其認爲它是一個js文件。你可以做的一些事情,沒有比其他人說的更好。但所有的2不一起工作 – chris

+0

爲什麼你傳遞一個表單值到你的PHP,然後在JS中接收它,當你可以直接訪問它? – emartel

回答

2

你會用$.ajax要求更好。不要回顯'按鈕的值是'部分,只是回顯實際值。例如:

$.ajax({ 
    url: "myPHPfile.php", 
    context: document.body 
}).done(function(data) { 
    var buttonValue = data; 
    // Whatever you want to do with the data goes here. 
}); 

見jQuery的文檔http://api.jquery.com/jQuery.ajax/

另外,如果要生成與PHP的頁面,只是附和PHP變量到JavaScript的

<script> 
... 
    var buttonValue = "<?php echo $buttonPHP; ?>"; 
... 
</script> 
+0

謝謝,但是再次,它不會是一個PHP值。我必須將它作爲JavaScript中的PHP值來使用。 – blsn

+0

它不會是一個PHP值,一旦頁面呈現,它會看起來像這樣,'var button =「這是我的任何$ buttonPHP變量等於'; – SteveEdson

+0

再次感謝,但請看我的'筆記'在我原來的帖子關於顯示一個警告框消息 – blsn

0

嘗試:

alert('<?php echo $buttonPHP; ?>'); 
+0

謝謝,但是這個或$ _SESSION都沒有顯示值。 – blsn

+0

我忘了引號。現在試試。 – SeanWM

+0

Thx。與引號或沒有...,仍然不顯示PHP值。 – blsn

2

編碼它的JSON代替試圖回顯數據:

<?php 
    if($_GET["selectedButtonValue"]) 
    { 
    $buttonPHP = $_GET['selectedButtonValue']; 
    header('Content-Type: application/json'); 
     echo json_encode($buttonPHP); 

    } 
?> 

然後用jq uery得到JSON來獲取數據

$.get('myPHPfile.php?selectedButtonValue='+buttonvalue, function(data){ 
        console.log(data); 

       }); 
+0

您可能實際上必須將$ _REQUEST更改爲$ _GET,但我相信它可以與 – chadpeppers

+0

@ Chad,你能解釋一下JavaScript中的PHP變量嗎? – blsn

+0

它應該作爲可變數據回來。所以在我上面的例子中,你應該把你的邏輯寫成「數據」。你可能想看看JSON以及如何閱讀 – chadpeppers

0

作爲一個臨時解決方案,您可以快速合併成兩髒這樣的代碼:

的index.php:

<?php 

    $buttonPHP = "10"; //Set up your default button variable 

    if($_REQUEST["selectedButtonValue"] == 10) 
    { 
    echo "Selected button value: 10"; //You can also print $_REQUEST["selectedButtonValue"] here directly, but what's the point if you can select it from DOM through jQuery? 
    exit; 
    } else if ($_REQUEST["selectedButtonValue"] == 20) { 
    echo "Selected button value: 20"; 
    exit; 
    } 
?> 
<html> 
<head> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
    var buttonValue = <?php echo $buttonPHP ?>; //Duplicate default value from PHP to JS 
    $(document).ready(function(){ 
    $('#myButtons input:radio').change(function() { 
     var buttonValue = $("#myButtons input:radio:checked").val(); 
     $("#myDiv").load('index.php', {selectedButtonValue : buttonValue}); 
    }); 
    }); 
</script> 
</head> 

<body> 
    <div id="myButtons"> 
    <input type="radio" name="category" value="10" />ButtonA 
    <input type="radio" name="category" value="20" />ButtonB 
    </div> 
    <div id="myDiv">Click the button to load results</div> 
</body> 
</html> 

的index.php呈現在瀏覽器中:

<html> 
<head> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
    var buttonValue = 10; //Duplicate default value from PHP to JS 
    $(document).ready(function(){ 
    $('#myButtons input:radio').change(function() { 
     var buttonValue = $("#myButtons input:radio:checked").val(); 
     $("#myDiv").load('index.php', {selectedButtonValue : buttonValue}); 
    }); 
    }); 
</script> 
</head> 

<body> 
    <div id="myButtons"> 
    <input type="radio" name="category" value="10" />ButtonA 
    <input type="radio" name="category" value="20" />ButtonB 
    </div> 
    <div id="myDiv">Click the button to load results</div> 
</body> 
</html> 

編輯:存儲的會話

<?php 

    session_start(); 

    if (isset($_REQUEST['selectedButtonValue'])) { 
     $_SESSION['selectedButtonValue'] = $_REQUEST['selectedButtonValue']; 
     echo $_REQUEST['selectedButtonValue']; 
     exit; 
    } else if (!isset($_SESSION['selectedButtonValue'])) { 
     $_SESSION['selectedButtonValue'] = 10; 
    } 

?> 
<html> 
<head> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
    var buttonValue = <?php echo $_SESSION['selectedButtonValue']; //Get input value from session ?>; 
    $(document).ready(function(){ 
    $('#myButtons input:radio').change(function() { 
     var buttonValue = $("#myButtons input:radio:checked").val(); 
     $("#myDiv").load('index.php', {selectedButtonValue : buttonValue}); 
    }); 
    }); 
</script> 
</head> 

<body> 
    <div id="myButtons"> 
    <input type="radio" name="category" value="10" />ButtonA 
    <input type="radio" name="category" value="20" />ButtonB 
    </div> 
    <div id="myDiv"><?php echo $_SESSION['selectedButtonValue']; //Get input value from session ?></div> 
</body> 
</html> 

此外,請確保您過濾$ _REQUEST變量,因爲從現在開始,它將打印任何東西。詳情請參閱http://en.wikipedia.org/wiki/Cross-site_scripting

+0

謝謝,你的解決方案由於$ _REQUEST [「selectedButtonValue」]是未定義的(JavaScript必須進行調用)而產生錯誤。 – blsn

+0

@ user203952呃,嘗試'if(isset($ _ REQUEST [「selectedButtonValue」])){...}' – Kai

+0

Thx。我改變了,它沒有顯示任何價值。 – blsn

相關問題