Как взять значение из переменной javascript, чтобы использовать в качестве входной переменной php через кнопку, без кнопки отправки или нет? - PullRequest
0 голосов
/ 05 июня 2019

как извлечь значение из переменной javascript, которая будет использоваться в качестве входной переменной php с помощью кнопки, а не кнопки отправки, поскольку кнопка отправки не может генерировать последовательности более одного раза одновременно?Я пробовал этот метод, но я все еще не могу получить вывод ("х") от JS с помощью кнопки.это мой первый код с javascript, который я старался изо всех сил, потому что я пытался использовать break, но это не сработало, тогда я поставил x--, чтобы заморозить его.

этот javascript работает так, как я хочу, но все еще не может получить значение "x" из значения кнопки

Код:

<title>Test-2019</title>
<!-- x += 1 -->
<!-- Java Script -->
<script> 
x = 0;
function f_Next()
{
    x++;
    document.getElementById("Next").value = x;
    if(x == 5) {
        x--;
    }
}
</script>
<!-- HTML -->
<form method="post" action="#">
    <input type="button" value="Soal" id="Next" onClick="f_Next()">
    <!-- 
    <input type="hidden" value="0" id="Next">
    -->
</form>
<!-- PHP -->
<?
$a = array("str1", "str2", "str3", "str4", "str5");
if (isset($_POST['soal']))
{
    $va = $_POST['soal'];
    print $a[$va];
}
?>

вклdelphi Я всегда использую этот метод, и я также пытался реализовать его, но он не работал, поэтому я попытался сделать это с помощью java-скрипта.

Delphi Пример кода:

//global var
const
    a : array[0..4] of string = ('str1', 'str2', 'str3',  'str4', 'str5');
 var
    g : integer;
    ...
    ...
    //on create
    g := 0;
    ...
    ...
    //on button click
    g := g + 1;
 if g = 5 then
    g = 0;
    edit1.text := IntToStr(g);

  //or like this example 2
   button1.tag := button1.tag + 1;
if button1.tag = 5 then
   button1.tag := 0;       
   edit1.text := IntToStr(button1.tag);

php код былЯ пытался, как это

function fNext();
{
    $x = 0;
    if ($x == 5)
    {
        break;
    }
    x += 1;
}

Прошу прощения, если я включил Паскаль / Delphi код, CZ может быть, вы можете помочь мне преобразовать его в php.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Я не уверен на 100%, что понял смысл вопроса, но надеюсь, что это может быть более или менее желаемым результатом?

Каждое нажатие кнопки увеличивает счетчик x и отправляет это значение в скрипт PHP. PHP-скрипт отвечает значением из массива, соответствующим значению x

Обратный вызов ajax увеличивает переменную и делает другие, действительно интересные вещи.

<?php
    $a = array("str1", "str2", "str3", "str4", "str5");
    if (isset($_POST['soal'])){
        $va = $_POST['soal'];

        $response=( array_key_exists( $va, $a ) ) ? $a[ $va ] : 'error';
        exit( $response );
    }
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Test-2019</title>
        <script>

            document.addEventListener('DOMContentLoaded', ()=>{

                let x=0;

                const ajax=function(payload,callback){
                    let xhr=new XMLHttpRequest();
                        xhr.onreadystatechange=function(){
                            if( this.status==200 && this.readyState==4 )callback.call( this, this.response );
                        }
                        xhr.open('POST', location.href, true );
                        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                        xhr.send( payload );
                }
                const callback=function(r){
                    alert(r);
                    x++;
                    if( x==5 )x=0;
                }
                document.querySelector( 'form input[ type="button" ]' ).addEventListener('click', function(e){
                    ajax.call( this, 'soal=' + x, callback )
                });
            });

        </script>
    </head>
    <body>
        <form method='post'>
            <input type='button' value='Soal' />
        </form>
    </body>
</html>
0 голосов
/ 05 июня 2019

Не совсем уверен, что вы пытаетесь сделать здесь, НО, если вы хотите, чтобы значение элемента <input> дошло до PHP, оно ДОЛЖНО ИМЕТЬ атрибут name!

Поэтому измените ваш ввод на

<input name="Next" type="button" value="Soal" id="Next" onClick="f_Next()">`
//     ^^^^^^^^^^^  added this 

Теперь вам нужно правильно обратиться к нему в массиве $_POST, поэтому, если мы вызываем элемент Next, как в name="Next", мы должныиспользуйте $_POST['Next'], а не $_POST['soal'], так как soal был атрибутом value, который, кстати, должен был переписать javascript с 1 или 2 и т. д.

$a = array("str1", "str2", "str3", "str4", "str5");

if (isset($_POST['Next']))
{
    $va = $_POST['Next'];
    print $a[$va];
}
...