问题:将数组从PHP传递到Javascript(Jquery),如常见答案所示

问题:将数组从PHP传递到Javascript(Jquery),如常见答案所示,javascript,php,jquery,arrays,json,Javascript,Php,Jquery,Arrays,Json,我试图将数组从包含的php文件传递到javascript外部文件; 它们似乎都能工作,因为:1如果我在主页上尝试echo json_encode$array而不是在脚本中传递它,那么输出是正确的; 2如果我将此输出复制并粘贴到javascript,脚本将正常工作,并将元素添加为Select标记的选项 但是如果我尝试在Javascript中赋值 var arrayConduttori = <?php echo json_encode($array); ?>; 就像我在stacko

我试图将数组从包含的php文件传递到javascript外部文件; 它们似乎都能工作,因为:1如果我在主页上尝试echo json_encode$array而不是在脚本中传递它,那么输出是正确的; 2如果我将此输出复制并粘贴到javascript,脚本将正常工作,并将元素添加为Select标记的选项

但是如果我尝试在Javascript中赋值

  var arrayConduttori = <?php echo json_encode($array); ?>;
就像我在stackoverflow上的类似问题中发现的那样,整个脚本没有运行,单击事件也没有发生任何事情

var clo; //clone della riga in modifica, se devo annullare operazione

//funzione al clikc per immettere entrega
$(document).on('click', "table td a[id^='entr']",function(){
    //se ci sono altre righe in modifica le faccio ridiventare normali
    $('tr.edita').removeClass('edita').replaceWith(clo);
    // mi identifico la riga su cui devo lavorare
    var riga=$(this).attr('id').substr(4,12);
    var trriga='#tr'+riga;
//mi faccio la copia di backup della riga nella variablie clone
clo=$(trriga).clone();
//mi segno i dati che mi servono immettere automaticamente
var turno=$('#turn'+riga).text();
$(trriga).addClass('edita').html('<td id=form colspan=5><h2>Taxi '+riga.substr(1.11)+'</h2>' +
    'Turno '+turno +
    '<ul>' +
    '<li>Conductor</label><select id=selcond></select></li>' +
    '<li><label>Entrega</label><input type=text></li>'+
    '<li><label>Ahorro</label><input type=text></li>'+
    '<li><label>Gastos</label><input type=text></li>'+
    '</ul></td>');
//aggiungo al campo Select le opzioni conduttori dall'array
  var arrayConduttori = <?php echo json_encode($array);?>;
  $.each(arrayConduttori, function(key, value) {
  $('#selcond').append($("<option></option>").attr("value",key).text(value));
  });
});

等一下!如果JavaScript文件是外部文件,它如何知道$array实际上是什么?

如果要回显php变量,它必须在.php文件中。在您的例子中,就是这样 在.js页面中回响

php在服务器端运行,js从客户端加载。所以在加载.js文件时

php已经在服务器中执行,输出以html页面打印

<?php echo json_encode($array); ?>
在客户端,它将不起作用。最好的方法是从服务器发送它,或者在加载外部js文件之前在主页面中创建一个js变量

var arrayConduttori = <?php echo json_encode($array); ?>;
在这之后包括你的剧本

<script src='/your script'></script>

我认为它的工作原理与php includes类似,包括页面的整个脚本,与restIt共享所有变量和函数。因为没有办法让.js文件知道$array实际上是什么。您可以做的是,将.js文件中的逻辑封装在一个函数中,在PHP文件的标记中调用该函数,并作为参数传递。