2017-04-23 10 views
1

ここに私のサンプルコードがあります。どのようにPHP変数にJavaScript変数を渡すことができますか?JavaScriptの変数をPHP変数に渡すにはどうすればいいですか?

はJavaScript

var jsChoose = confirm("are you sure?"); 

PHP

$phpChoose = "<script>document.write(jsChoose);</script>"; 
if($phpChoose==True){ 
    echo "true"; 
} 
else{ 
    echo "false"; 
} 
+3

[JavaScript変数をPHPに渡す方法](http:// stackoverflow)の可能な複製。com/questions/1917576/how-to-pass-javascript-variables-to-php) – 4castle

答えて

2

一つの変数を送信情報クライアント側(JS)からサーバー側(PHP)にはhtml formを使用します。ユーザーに見せたくない場合は、Webページからhtml形式をhiddenにすることができます。
このフォームをPOSTのPHPスクリプトに必要な情報にします。
たとえば、boolean変数を、確認ボックスから取得したサーバー側に渡したいとします。ですから、確認ボックスから返された値をサーバー側のPOSTにするフォームを作ってみましょう。

HTMLフォーム:

<form id="myForm" action="testBoolean.php" method="post"> 
     <input type="hidden" id="inputBoolean" value="5" name="boolean"> 
</form> 

Javascriptを(フォームの下にこれを入れて、あなたがない場合は、エラーが出る場合があります)

<script> 
var jsChoose = confirm("are you sure?"); 

document.getElementById("inputBoolean").value = jsChoose; 

document.getElementById("myForm").submit(); 
</script> 

そして今、あなたは "と呼ばれるPHPのページが必要testBoolean.php "とそれに投稿された情報を取得します。このデモンストレーションでは、あなたの確認ボックスで与えられたPOSTedブール変数の値をエコーし​​ます。

testBoolean.php:

<?php 
$boolean= htmlspecialchars($_POST['boolean']); 

echo $boolean; 

?> 

$_POST['']括弧の中にあるものを忘れないでください、あなたが提出した、あなたの入力フィールドのnameです。 これが役立つことを祈って、幸運を祈り、敬具しています。

2

AJAX機能を使用してPHPにその通過するための最良の方法の

$.ajax({ 
    type: "POST", 
    url: "file url with php", 
    data: {myVariable:value}, 
    complete: function(data){ 
     console.log(data); 
    } 
}); 
0

次のようにクエリ文字列を使用して、もう一つの方法は、もあります:

<?php 
if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != null) { 
    $qs = htmlentities($_SERVER['QUERY_STRING']); 
    list(,$ans) = explode("=",$qs); 
    if ($ans) { 
     echo "Your answer is $ans. "; 
    } 
    exit("Thank you"); 
} 
?> 

あなたは、以下のJavaScriptを含むHTML続く、ウェブページの上部にPHPコードを入れることができます:

<script> 
var ans = false; 
if(ans = confirm("Are you sure?")) { 
    this.location += "?answer=" + ans; 
} 
else 
{ 
    document.write("Action cancelled since you seem unsure"); 
} 
</script> 

Ajaxは確かにエレガントですが、変数を含むクエリ文字列を動的に生成することも可能です。必要に応じて次のように、あなたは、stream_context_create()を利用することにより、フォームをハードコーディングせずに他のページへのクエリ文字列を投稿できる:希望のURLで

<?php 
error_reporting(E_ALL); 

if (isset($_SERVER['QUERY_STRING']) && ($_SERVER['QUERY_STRING'] != NULL)) 
{ 
    $url = 'http://www.example.com/some_page.php'; 
    $qs = htmlentities($_SERVER['QUERY_STRING']); 
    list($key,$value) = explode("=",$qs); 
    $arr = array($key => $value); 
    $options = array(
    'http'=>array(
     'method'=>"POST", 
     'header'=> 
     "Accept-language: en\r\n". 
     "Content-type: application/x-www-form-urlencoded\r\n", 
     'content'=>http_build_query($arr) 
)); 

    $context = stream_context_create($options); 

    $fp=fopen($url,'rb',false,$context); 
    fpassthru($fp); 
    fclose($fp); 
    exit; 
} 
?> 

あなただけのスクリプトを追加する必要があり、その

<?php 
var_dump($_POST['answer']); 
関連する問題