0

以下の単純な Jquery コードを使用して PHP ページを呼び出し、ボタン情報を div に戻します。

<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;
  }
?>

次のように、JavaScript 内で PHP 情報を取得するにはどうすればよいですか。

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

注: 次のコードはアラート ボックス メッセージを示していますが、$buttonPHP の値が必要なので使用できません。

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

私はmyPHPfile.php $_SESSION、およびすべてのjQuery AJAX関数で 試しましload()た:get()post()ajax()

私はすべてを見ましたが、答えを見つけることができませんでした。

4

4 に答える 4

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>
于 2013-01-10T16:12:22.407 に答える
2

データをエコーするのではなく、JSON でエンコードします。

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

  }
?>

次に、jquery get json を使用してデータを取得します

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

                });
于 2013-01-10T16:18:10.577 に答える
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を参照してください。

于 2013-01-10T16:25:30.590 に答える
0

試す:

alert('<?php echo $buttonPHP; ?>');
于 2013-01-10T16:11:34.260 に答える