将数据从php传递到Jquery

时间:2011-10-15 06:29:43

标签: javascript jquery

我将所有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>

JS

var pagedata = $('#pagedata').text();
var break_data = pagedata.split('<>');

6 个答案:

答案 0 :(得分:2)

为什么你不直接使用php渲染javascript(作为JSON),然后你可以在本地使用jQuery。

<script>

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

</script>

编辑:

如果你不想在你的php页面中有内联js,并且不希望apache将js作为php处理,那么也许你可以src一个包含js的php文件。

<script src="my_php_file.php">

并且在php文件里面有js

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

OR

只是jQuery使用ajax jQuery.get(“php_url.php”)调用php webservice,并再次在那个php脚本中渲染一些json。

答案 1 :(得分:0)

您可以直接将javascript填充为:

,而不是从潜水中获取数据
var pagedata = '<?php echo $somevariable; ?>';
var break_data = pagedata.split('<>');

答案 2 :(得分:0)

您应该实际回应JavaScript代码,而不是误用HTML来传递数据(必须要解析)。例如,PHP可以生成:

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

由于这是在页面的全局范围内声明的,因此您的脚本实际上可以访问这些变量。

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

答案 3 :(得分:0)

最佳做法可能是Matt在上面的评论中提到的:使用JSON。如果您要使用jQuery,可以使用$.get()$.getJSON()来调用PHP脚本。你可以在这里找到PHP JSON的手册:http://php.net/manual/en/book.json.php,以及jQuery方法$.getJSON()的API参考:http://api.jquery.com/jQuery.getJSON/

HTH。

答案 4 :(得分:0)

HTML

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

json_encode应该已经在PHP 5.2中了。否则请查看此处http://www.json.org/

JS

var master = JSON.parse( $('pagedata').html() );
// master.data1; // single
// master.data2[0]; // 2a
// master.data2[1]; // 2b

要使用JSON.parse,您需要来自https://github.com/douglascrockford/JSON-js的json2.js。

答案 5 :(得分:0)

将JS变量和对象与数据结合起来是一个好主意,但另一种方法是通过内部jQuery存储来管理它们 $ .data()

对于非平凡的用户界面来说,优势显而易见:

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

<强> JS

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