Javascript 将数据从php传递到Jquery

Javascript 将数据从php传递到Jquery,javascript,jquery,Javascript,Jquery,我将所有javascript/jquery代码都放在一个文件中,并将其包含到我的页面中。如果没有将apache处理js文件作为php,那么将数据从php传递到我的js脚本的最佳方式是什么?现在我的页面上有一个隐藏的div,我回显一个值,然后使用jquery获取文本内容,然后拆分它以获取变量。这是一个好的方法吗?还是有更好的办法 更新 如前所述,我的所有js代码都在一个.js文件中,我将其包含在网页中。在这个场景中,我可以使用php的唯一方法是告诉apache将.js文件视为php,这样它就可以重

我将所有javascript/jquery代码都放在一个文件中,并将其包含到我的页面中。如果没有将apache处理js文件作为php,那么将数据从php传递到我的js脚本的最佳方式是什么?现在我的页面上有一个隐藏的div,我回显一个值,然后使用jquery获取文本内容,然后拆分它以获取变量。这是一个好的方法吗?还是有更好的办法

更新

如前所述,我的所有js代码都在一个.js文件中,我将其包含在网页中。在这个场景中,我可以使用php的唯一方法是告诉apache将.js文件视为php,这样它就可以重新识别.js文件中的php代码。我不想这样做

HTML

<div id="pagedata" style="display:none;">data1<>data2</div>
data1data2
JS

var pagedata = $('#pagedata').text();
var break_data = pagedata.split('<>');
var pagedata = jQuery.data( document.body, '<? echo json_encode($var); ?>');
var break_data = JSON.parge(pagedata)
var pagedata=$('#pagedata').text();
var break_data=pagedata.split(“”);

您可以直接将javascript填充为:

var pagedata = '<?php echo $somevariable; ?>';
var break_data = pagedata.split('<>');
var pagedata='';
var break_data=pagedata.split(“”);

您应该实际回显JavaScript代码,而不是错误地使用HTML传递数据(必须对其进行解析)。例如,PHP可以生成:

<script type="text/javascript">
  var data1 = "data1";
  var data1 = "data2";
</script>

var data1=“data1”;
var data1=“data2”;
由于这是在页面的全局范围内声明的,所以脚本实际上可以访问这些变量


你唯一需要注意的是比赛条件。您的脚本必须在定义数据后执行。但是,使用标准的jquery on dom ready回调并不成问题。

为什么不让php直接呈现javascript(作为JSON),然后jquery就可以使用它了

<script>

  var data =  {my: 'data', goes: 'here', <? echo render_more_of_my_data(); ?> };

</script>

var data={my:'data',goes:'here',};
编辑:

如果您不想在php页面中使用内联js,也不想让apache将js作为php处理,那么您可以src一个包含js的php文件

<script src="my_php_file.php">

在php文件中有js

var data = <? echo render_my_data(); ?>;
var数据=;


只需jQuery使用ajaxjquery.get(“php_url.php”)调用一个php Web服务,然后在php脚本中再次呈现一些json

最佳实践可能正如Matt在上面的评论中提到的那样:使用JSON。如果要使用jQuery,可以使用
$.get()
$.getJSON()
调用PHP脚本。您可以在这里找到PHP JSON的手册:,并在这里找到jQuery方法
$.getJSON()
的API参考:

HTH.

HTML

<div id="pagedata" style="display:none;">
<? 
$master['data1'] = 'single';
$master['data2'] = array('2a', '2b');
echo json_encode($master); ?>
</div>

要使用JSON.parse,您需要从这里开始使用json2.js。

最好将js变量和对象与数据一起使用,但另一种方法是通过内部jQuery存储来管理它们。$.data()

对于非平凡的UI来说,优势是显而易见的:

  • 可以将DOM对象用作命名空间
  • 内部数据的封装
  • 逻辑和对象是“隔离的”
JS

var pagedata = $('#pagedata').text();
var break_data = pagedata.split('<>');
var pagedata = jQuery.data( document.body, '<? echo json_encode($var); ?>');
var break_data = JSON.parge(pagedata)
var pagedata=jQuery.data(document.body');
var break_data=JSON.parge(pagedata)

您好,json始终是一个不错的选择。PHP有一个编码为json的函数,然后可以从javascript对其进行解码。如果它只是一个变量,你可以随时回显它。类似于
echo'var data1=”。$somephpvariable
如果js代码位于页面中包含的文件中,则此代码的可能副本将不起作用,除非我告诉apache将js文件作为php处理,这是我不想要的。那么最好的方法就是编写一个脚本,每次都在光盘上写入js文件。同样,我不能在外部js文件中使用php代码。我必须将apache进程js文件作为apache,这样才能工作。如果我在上面运行您的代码,它将出错。我不想将js内联添加到我的页面,我想将其作为包含在我的网页中的文件保留。我不是说将其回显到外部js文件,而是回显到您的HTML页面。这就是关于它是全局作用域的解释。我不想在我的页面中使用内联js代码。但我们将研究这一选择。