J'essaie de passer plusieurs variables d'une page php dans un script java. Cependant, seul le premier paramètre est transmis.

La page php appelle le script comme ceci:

<?
$sdate = 0;
$edate = 2;
?>
<script type="text/javascript">
            window.onload = function() { 
                datagrid = new DatabaseGrid('<? echo $sdate; ?>', '<? echo $edate; ?>');
            }; 
</script><BR>

Le script Java appelé est:

function DatabaseGrid(sdate, edate) 
{ 
    this.editableGrid = new EditableGrid("demo", {
        enableSort: true,
        tableLoaded: function() { datagrid.initializeGrid(this); },
        modelChanged: function(rowIndex, columnIndex, oldValue, newValue, row) {
            updateCellValue(this, rowIndex, columnIndex, oldValue, newValue, row);
        }
    });
    this.fetchGrid(sdate);
    this.fetchGrid(edate); 

}

DatabaseGrid.prototype.fetchGrid = function(sdate, edate)  {
    // call a PHP script to get the data
    alert("loaddata_dailyotp.php?o=" + sdate + "&e=" + edate + "");
    this.editableGrid.loadXML("loaddata_dailyotp.php?o=" + sdate + "&e=" + edate + "");
};

DatabaseGrid.prototype.initializeGrid = function(grid) {
    grid.renderGrid("tablecontent", "testgrid");
};  

J'ai ajouté la fenêtre d'alerte pour montrer exactement ce qui était demandé. Je m'attendais à ça:

loaddata_dailyotp.php? o = 0 & e = 2

Cependant, ce que je reçois est:

loaddata_dailyotp.php? o = 0 & e = undefined

Pourquoi mon deuxième paramètre ne passe-t-il pas?

-1
Joel Lewis 13 juil. 2015 à 16:40

4 réponses

Meilleure réponse

Vous ne transmettez pas le paramètre "edate" à votre appel fetchGrid(). C'est pourquoi il est affiché comme "non défini". Pour une raison quelconque, vous appelez fetchGrid() deux fois à la place.

4
Jay Blanchard 13 juil. 2015 à 13:47

Appelez fetchGrid comme ceci

function DatabaseGrid(sdate, edate) 
{ 
    this.editableGrid = new EditableGrid("demo", {
        enableSort: true,
        tableLoaded: function() { datagrid.initializeGrid(this); },
        modelChanged: function(rowIndex, columnIndex, oldValue, newValue, row) {
            updateCellValue(this, rowIndex, columnIndex, oldValue, newValue, row);
         } 
    });
    this.fetchGrid(sdate, edate);
}

Vous avez manqué de passer le deuxième paramètre.

0
webster 13 juil. 2015 à 13:52

Je suis développeur sharepoint. J'ai rencontré le même problème dans une de mes applications où je passais deux valeurs et seule la première valeur atteignait l'autre extrémité. même la boîte d'alerte montrait deux valeurs.

Le problème était que les dernières valeurs n'atteignaient pas l'autre extrémité, donc CRAZY SOLUTION devait passer 3 paramètres, le 3e étant le paramètre de test, donc mes deux paramètres atteignaient l'autre extrémité et le 3e paramètre qui était de toute façon inutile était automatiquement négligé.

Suggestion dans votre cas:

  1. Veuillez vérifier avec TROIS paramètres si vous n'obtenez toujours qu'un seul paramètre ou

  2. params;)

0
davejal 21 janv. 2016 à 01:10

Vous pouvez le faire de la manière suivante:

<script type="application/json">
var payload = <?= json_encode(array('sdate' => $sDate, 'edate' => $eDate)); ?>
</script>

Puis appelez votre script:

<script type="text/javascript">
window.onload = function() { 
   datagrid = new DatabaseGrid(payload.sdate, payload.edate);
}; 
</script>
0
t1gor 13 juil. 2015 à 13:46