问题:将数组从PHP传递到Javascript(Jquery),如常见答案所示
我试图将数组从包含的php文件传递到javascript外部文件; 它们似乎都能工作,因为:1如果我在主页上尝试echo json_encode$array而不是在脚本中传递它,那么输出是正确的; 2如果我将此输出复制并粘贴到javascript,脚本将正常工作,并将元素添加为Select标记的选项 但是如果我尝试在Javascript中赋值问题:将数组从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
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文件的标记中调用该函数,并作为参数传递。