Переменная JavaScript в PHP, который уже в JavaScript

1

Я пробовал этот код:

<script type="text/javascript">
    var s = 0;
    document.getElementById('text').value = "<?php echo phpVal[s];?>";
</script>

проблема в том, как я могу поместить значение (s) в (PHP) код.

Здесь больше контекста:

<head>
<?php $s = ["a","b","c"]; ?>
<script type="text/javascript">
function doFun(ss){
    var data = "<?php echo json_encode($s); ?>";
    document.getElementById('t').value = s[ss];
}
</script>
</head>
<body>
<input type="text" id="t" name="t" />
<button type="button" id="b" name="b" onclick="doFun(0)">doFun</button>
</body>
  • 0
    Вы пытаетесь достичь невозможного? Это как смешивать масло с водой.
  • 0
    @invisal почему это невозможно !!
Показать ещё 2 комментария
Теги:
variables

1 ответ

2
Лучший ответ

Вы не можете, к тому времени, когда s имеет значение (на клиенте), код PHP (на сервере) уже давно завершен.

Что вы делаете, а не многое зависит от того, что ваша конечная цель. У вас много вариантов. Вот два из них:

  1. Выведите весь массив/объект phpVal для клиента, а затем проиндексируйте его с помощью s.

    var s = 0;
    var data = <?php echo json_encode(phpVal)%>;
    document.getElementById('text').value = data[s];
    
  2. Отправьте s на сервер с помощью ajax, попросите PHP-код, который работает в ответ на этот запрос, phpVal правильное значение из phpVal и верните его в результате ajax, положив его на input value стороне клиента. Например:

    JavaScript:

    var s = 0;
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            document.getElementById('text').value = xhr.responseText;
        }
    };
    xhr.open("get-value.php?s=" + encodeURIComponent(s));
    // You don't really need this ^
    // for '0', but many times when sending variables to the
    // server, you do
    xhr.send();
    

    PHP для get-value.php (примерно):

    <?php
    header('Content-Type: text/plain');
    $phpVal = /*...get the value however it is you do that...*/
    echo $phpVal[$_GET['s']];
    ?>
    

Но опять же это зависит от того, что вы на самом деле пытаетесь сделать.

  • 0
    это решение может помочь, но мне не нужно соединяться с сервером и приносить данные ... у меня уже есть массив, и я хочу поместить его значение в зависимости от индекса, который я хочу отправить ... например
  • 0
    <head> <? php $ s = ["a", "b", "c"]; ?> <script type = "text / javascript"> function doFun (ss) {var data = "<? php echo json_encode ($ s);?>"; document.getElementById ('t'). value = s [ss]; } </ script> </ head> <body> <input type = "text" id = "t" name = "t" /> <button type = "button" id = "b" name = "b" onclick = "doFun (0)"> doFun </ button> </ body>
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню