简体   繁体   中英

Assign javascript variable to php variable

How to pass javascript variable that came from select option to a PHP variable? I want to set PHP variable depending on user selection.
I tried that code:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script>
    $(function(){
        $("select[name='sex']").change(function () {
            var submitSearchData = jQuery('#extended-search').serialize();
            var selectedValue=$('#sex').val();
            jQuery.ajax({
                type: "POST",
                data: 'selected=' + selectedValue
                url: "ajax.php",
                success: function () {
                    // alert(submitSearchData);
                    alert(selectedValue);
                }
            });
        });
    });
</script>
<form id="extended-search" >
    <div class="input-container">
        <select class="select" name="sex" id="sex">
            <option value="0">All</option>
            <option value="1">M</option>
            <option value="2">F</option>
        </select>
    </div>
</form>
<?php
var_dump ($_REQUEST['selected']); //that print NULL don't know why!
?>

You are passing data in wrong format. Data is passed as an object. Please refer below.

 $("select[name='sex']").change(function () {
    var submitSearchData = jQuery('#extended-search').serialize();
    var selectedValue=$('#sex').val();
   jQuery.ajax({
    type: "POST",
    data: {'selected': selectedValue},
    url: "ajax.php",
    success: function (response) {
    // alert(submitSearchData);
    alert(response);
    }
   });
});

Is not possible in the same instance of time:

yourfile -> ajax -> yourfile (here is the value, but you can't see this in your current webpage except that instead of ajax, send post form)

I hope this will help you...

dataType: "html",
data: {'selected': selectedValue},

and then u can get it via $_POST/$_REQUEST array since you have set your type to post.

$_REQUEST is null because it is not related to the ajax request you send. Try this for example:

<?php
    if (isset($_POST["selected"])) {
    echo $_POST["selected"];
} else {
?>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    </head>
    <body>
        <form id="extended-search">
            <div class="input-container">
                <select class="select" name="sex" id="sex">
                    <option value="0">All</option>
                    <option value="1">M</option>
                    <option value="2">F</option>
                </select>
            </div>
        </form>
        <script>
        $(function() {
            $("select[name='sex']").change(function () {
                var selected = $(this).val();
                $.ajax({
                    type: "POST",
                    data: {
                        selected: selected
                    },
                    url: "ajax.php",
                    success: function (data) {
                        alert(data);
                    }
                });
            });
        });
        </script>
    </body>
</html>

<?php } ?>

EDIT:

I updated the script and tested it. You had some errors in your code. Hope this works for you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM