Ich kann meinen PHP-Wert in eine Javascript-Variable umwandeln, aber ich glaube nicht, dass meine script.js ihn findet. Es fehlen natürlich viele Dateien, um diese Frage sauber zu halten, aber mein Problem ist, dass script.js schoolId als undefined anstelle des tatsächlichen Werts erhält, aber wenn ich console.log schoolId bekomme, bekomme ich ein Wert von "1" (erste Seite hat ID 1, damit das funktioniert).

Header.php:

<?php 
//gets current page id
$schoolOfficialId = $specificSchool[0]["id"]; 
?>
<head>
    <script type="text/javascript" src="js/script.js"></script>
</head>
<body>
    <input type="hidden" id='schoolOfficialId' value="<?php echo $schoolOfficialId;?>"/>
    <script type="text/javascript">
        var schoolId = $('#schoolOfficialId').val();
    </script>
</body>

Script.js: ajax hier aufrufen HINWEIS: Im ajax weiß ich, dass die Daten Probleme haben, die schoolId aus der header.php zu finden, um sie an die PHP-Datei zu senden.

// execute an ajax query to push id of page to load_more.php
            $.ajax({
                url: 'load_more.php',
                type: 'POST',
                data: {schoolId:schoolId},
                success:function(data){
                    console.log("working");
                }
            });

Meine load_more.php:

if (isset($_POST['schoolId'])) {
    echo "yes";
}else {
    echo "nope";
}//keeps echoing nope because the schoolId is not received
0
Gianni 16 Aug. 2015 im 23:54

3 Antworten

Beste Antwort

Das Problem ist, dass das Skript vor der Deklaration ausgeführt wird.

<script type="text/javascript" src="js/script.js"></script> befindet sich im Kopf, aber var schoolId = $('#schoolOfficialId').val(); befindet sich am Ende der Seite.

Fügen Sie das Skript ein, nachdem Sie schoolId deklariert haben.

<head>
</head>
<body>
    <input type="hidden" id='schoolOfficialId' value="<?php echo $schoolOfficialId;?>"/>
    <script type="text/javascript">
        var schoolId = $('#schoolOfficialId').val();
    </script>
    <script type="text/javascript" src="js/script.js"></script>
</body>

P.S. Trotz anderer Antworten ist data: {schoolId:schoolId}, vollkommen in Ordnung, es sei denn, der Schlüsselname steht in Konflikt mit einem reservierten Wort.

2
Popnoodles 16 Aug. 2015 im 21:23

Wenn ich Folgendes ausführe, kann ich ja in Alarmbereitschaft sehen ...

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>stackoverflow</title>
    </head>
    <body>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
        <script>
            $(document).ready(function () {
                var schoolId = $("#schoolOfficialId").val();
                $.ajax({
                    url: 'ajax.php',
                    type: 'POST',
                    data: {schoolId: schoolId},
                    success: function (data) {
                        alert(data);
                    }
                });
            });
        </script>
    </body>
</html>

Ajax-Datei (ajax.php):

if (isset($_POST['schoolId'])) {
    echo "yes";
} else {
    echo "nope";
}
1
Hasan Tareque 17 Aug. 2015 im 08:11

Laden Sie den Ajax-Code, nachdem Sie var schoolId definiert haben, und überprüfen Sie den Quellcode, ob der PHP-Druckwert für schoolId korrekt ist oder nicht. Vergessen Sie auch nicht, $(document).ready() zu verwenden.

<script type="text/javascript">
$(document).ready(function(){
    var schoolId = $('#schoolOfficialId').val();

$.ajax({
            url: 'load_more.php',
            type: 'POST',
            data: {schoolId:schoolId},
            success:function(data){
                alert(data);
            }
        });
})
</script>

PHP:

if (isset($_POST['schoolId'])) {
echo $_POST['schoolId'];
}else {
echo "nope";
}
1
Neel Ion 16 Aug. 2015 im 21:13