2015-07-13 3 views
-1

Я пытаюсь передать несколько переменных с php-страницы в java-скрипт. Однако передается только первый параметр.Проблемы с переносчиками в Javascript

страница PHP вызывает сценарий, как это:

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

Java-Script называют это:

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 о = 0 & е = 2

Однако то, что я получаю:

loaddata_dailyotp.php о = 0 & е? = undefined

Почему мой второй параметр не проходит?

+2

взгляд, как вы называете fetchGrid, с одним параметром –

ответ

4

Вы не передаете параметр «edate» на ваш вызов fetchGrid(). Вот почему он отображается как «неопределенный». По какой-то причине вы вызываете fetchGrid() два раза.

+0

Спасибо! Это очень помогло. –

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

Вы пропустили передать второй параметр.

+0

Зачем ПП «попробовать это»? Хороший ответ всегда будет объяснять, что было сделано, и почему это было сделано именно так, не только для OP, но и для будущих посетителей SO. –

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> 
0

Я Sharepoint разработчик. Я столкнулся с той же проблемой в одном приложении, где я передавал два значения, и только первое значение достигало другого конца. даже в поле предупреждения отображалось два значения.

Ошибка только в последних значениях не достигла другого конца, поэтому CRAZY SOLUTION должен был пройти 3 параметра, третий из которых был тестовым параметром, поэтому мои два параметра достигли другого конца, а третий параметр, который был бесполезен, автоматически игнорировался.

Предложение в вашем случае:

  1. Пожалуйста, проверьте с тремя параметрами ли вы по-прежнему получать только один из параметров или

  2. Params;)