将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的主要内容,如果未能解决你的问题,请参考以下文章

将 Unicode 字符插入 JavaScript

如何将 javascript 函数从子 flash swf 文件插入 HTML 文档?

为啥这段代码没有将数据插入数据库?

如何使用 jquery/javascript 将文本插入 json [重复]

javascript代码中的数据插入mysql数据库

Javascript:将数组中的数据插入函数参数