-1

我正在尝试将几个变量从 php 页面传递到 java 脚本中。然而,只有第一个参数被传递。

php 页面像这样调用脚本:

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

被调用的 Java 脚本是:

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");
};  

我添加了警报窗口以准确显示所请求的内容。我期待这个:

加载数据_dailyotp.php?o=0&e=2

但是我得到的是:

loaddata_dailyotp.php?o=0&e=undefined

为什么我的第二个参数没有通过?

4

4 回答 4

4

您没有将“edate”参数传递给您的fetchGrid()通话。这就是为什么它显示为“未定义”。出于某种原因,您fetchGrid()改为调用两次。

于 2015-07-13T13:44:35.977 回答
0

fetchGrid像这样打电话

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);
}

您错过了传递第二个参数。

于 2015-07-13T13:45:32.073 回答
0

您可以通过以下方式进行操作:

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

然后调用你的脚本:

<script type="text/javascript">
window.onload = function() { 
   datagrid = new DatabaseGrid(payload.sdate, payload.edate);
}; 
</script>
于 2015-07-13T13:46:16.580 回答
0

我是共享点开发人员。我在我的一个应用程序中遇到了同样的问题,我传递了两个值,只有第一个值到达了另一端。甚至警报框都显示了两个值。

问题只是最后一个值没有到达另一端,所以疯狂的解决方案是传递 3 个参数,第三个是测试参数,所以我的两个参数到达另一端,而无论如何无用的第三个参数被自动忽略。

您的建议:

  1. 请检查三个参数是否仍然只获得 1 个参数或

  2. 参数;)

于 2015-07-13T14:01:15.647 回答