【问题标题】:Inserting a javascript code into php将javascript代码插入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函数将数据库的结果包含在音乐播放器中。

标签: php javascript phpmyadmin


【解决方案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 Tutorial
Tizag'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 数组包含到网页中。

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      相关资源
      最近更新 更多