在Javascript中传递parmaters的问题

时间:2015-07-13 13:40:51

标签: javascript php editablegrid

我正在尝试将几个变量从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");
};  

我添加了警告窗口,以显示所请求的确切内容。我期待着这个:

  

loaddata_dailyotp.php O = 0安培; E = 2

然而,我得到的是:

  

loaddata_dailyotp.php O = 0安培; E =未定义

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

4 个答案:

答案 0 :(得分:4)

您没有将“edate”参数传递给"<% =_serviceMessageText %>" 来电。这就是它显示为“未定义”的原因。出于某种原因,你要拨打fetchGrid()两次。

答案 1 :(得分:0)

像这样呼叫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); }

{{1}}

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

答案 2 :(得分: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>

答案 3 :(得分:0)

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

问题只是最后的值没有到达另一端,所以CRAZY SOLUTION要传递3个参数,第3个是测试参数,所以我的两个参数到达另一端,第三个参数无论如何都没有被自动忽略。

您的案例建议:

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

  2. params;)