将javascript代码插入php
Posted
技术标签:
【中文标题】将javascript代码插入php【英文标题】:Inserting a javascript code into php 【发布时间】:2012-03-28 02:05:08 【问题描述】:我正在寻找将 javascript 函数包含到 php 代码中的可能性。
代码应该从搜索 php 文件中获取结果,然后以 Javascript 播放列表的形式打印出来。
这是 javascript 代码:
<script type="text/javascript">
$(document).ready(function()
var description = '';
var myPlaylist = [
mp3:'./../sounds/mysql-upload',
title:'mysql-title',
artist:'mysql-artist',
subcategory:'mysql-subcategory',
date:'mysql-date',
rating:'mysql-rating',
,
/* var myPlaylist has to repeat */
];
$('#main').ttwMusicPlayer(myPlaylist,
autoPlay:false,
description:description,
);
);
</script>
这里是php代码:
<?php
if (!empty($_POST['search']))
/* Connect to database */
$hostname = '';
$database = '';
$username = '';
$password = '';
if (!($mysql_link = mysql_connect($hostname, $username, $password)))
die('Could not connect');
/* Select databse */
if (!($db_selected = mysql_select_db($database, $mysql_link)))
die('Could not find database');
/* Send mysql command */
$sql_cmd = "SELECT * FROM sounds WHERE `keywords` LIKE '"
. $_POST['search']."%'";
if (!($res = mysql_query($sql_cmd)))
die('Invalid MySQL query');
/* Show results */
while ($dsatz = mysql_fetch_assoc($res))
$upload = $dsatz["upload"];
$title = $dsatz["title"];
$artist = $dsatz["artist"];
$subcategory = $dsatz["subcategory"];
$date = $dsatz["date"];
$rating = $dsatz["rating"];
/* Here should be the Javascript code */
/* Close database connection */
mysql_close($mysql_link);
?>
请注意,我不想在 php 代码的结果部分中包含完整的 Javascript 函数,而是应该重复的播放列表变量。
【问题讨论】:
注意 SQL 注入。你的"SELECT * FROM sounds WHERE 'keywords' LIKE '". $_POST['search']."%'"
对它开放。看看mysql_real_escape_string()
。
因为是循环变量每次都会得到不同的值,你的意思是要调用js函数吗?
不,我只需要js函数将数据库的结果包含在音乐播放器中。
【参考方案1】:
在 PHP 中,您可以创建一个数组,并用这些属性的数组填充它。 比如:
$results = array();
while ($dsatz = mysql_fetch_assoc($res))
$results[]=$dsatz;
$printout = json_encode($results);
现在要将其放入 JavaScript,您可以这样做:
var myPlaylist = <?php echo $printout; ?>;
【讨论】:
但是这个解决方案不能用于多个结果。 ajax 真的是唯一的可能吗? 确实如此。如果您注意到,$results 是一个数组数组,其中的每个数组都是数据库的“行”。当我将它转换为 JSON 时,它会被转换为相同的东西 - 一个与 PHP 中的数组相同的数组。试试看。 你没有。 json_encodes 将数组的 $results 数组转换为字符串,JavaScript 可以读取并转换为数组的数组。 你能给我举个例子吗?因为我不太确定我将如何处理结果数组。【参考方案2】:如果我对您的理解正确,您将需要 AJAX 来执行此操作。以下是一些开始的地方:
W3Schools AJAX TutorialTizag's AJAX Tutorial
此外,由于您已经在使用 JQuery,它可以让您的 AJAX 生活变得更加轻松。
在http://api.jquery.com/category/ajax/浏览JQuery AJAX API
【讨论】:
【参考方案3】:这是相当可能的,但是如何使用 json 来代替。 JSON 编码的字符串可以通过json_encode($array)
在 php 中生成,然后您可以使用 AJAX 将 json 加载到当前页面中。
另一种选择是,从 php 代码生成 javascript 数组,然后将 javascript 数组包含到网页中。
【讨论】:
以上是关于将javascript代码插入php的主要内容,如果未能解决你的问题,请参考以下文章
如何将 javascript 函数从子 flash swf 文件插入 HTML 文档?