1

当用户在我的网站 (PHP) 上的文本中选择一个单词,然后右键单击时,我想要一个 jQuery 上下文菜单,这可以通过使用现有的 jQuery 上下文菜单插件之一来完成。

但除了复制/粘贴/剪切等选项之外,我还希望使用 PHP对所选单词进行一些处理。我认为,这有点难。例如使用这个脚本:

$selection = //the selected word or text
$target = //fetch from MYSQL database
$output = array();
while ($row = //fetch $target) {
   If ($selection == $row->input) { array_push($output,$row->output); }
}
echo '//menu '.print_r($output).''; // of course not print_r! Just for the example's sake.

数据库示例:( 数据库示例 抱歉,图片过大)

好的,所以在示例文本中选择单词“lazy”,然后右键单击,应该会弹出 jQuery 框,显示从 PHP 提取的数据库中的结果。

例子: 文本和菜单示例

好的,所以我知道你不能只将 javascript 与 PHP 结合起来,它只能被解析,但我认为加载一个带有菜单的 iframe,它可以通过使用 javascript 设置 iframe src 来完成数据库提取的工作。在 url 中选择的单词。

但是,iFrame 并不是解决这个问题的好方法。

问题:我怎样才能有效地做到这一点?右键单击执行此脚本并在菜单中显示与数据库相关的内容?

4

3 回答 3

2

我需要知道您使用的插件才能为您提供一些代码示例,但一般来说,我会这样做:

  • jQuery 上下文菜单中的项目必须有一个单击处理程序。单击“选择”项时,使用它向服务器提交 AJAX 请求。
  • 确保给用户一些反馈(加载器或微调器)
  • 将结果放入阵列服务器端。
  • JSON 编码数组并将其作为响应发送(例如 echo json_encode($output)
  • JSON.parse(response) 在客户端,你现在有一个带有结果的 JS 对象
  • 将这些结果放在上下文菜单中(同样,如何取决于您使用的插件)
于 2013-06-05T18:43:56.767 回答
1

AJAX 是做你想做的事的好方法。

这是一个简单的 AJAX 示例。请注意,在第二个 .PHP 文件中,您可以在其中放置数据库查找等。

无论您从第二个脚本回显什么,都会被调用 javascript(再次是第一个脚本)接收,并且可以即时插入到您的上下文菜单中。这是另一个示例,在答案底部对过程进行了非常详细的分步说明。

于 2013-06-05T19:03:06.570 回答
0

我认为您必须使用 Ajax 从 PHP 文件中获取 JSON,您将在实际页面上处理该文件。

我创建了一个名为 的 PHP 文件test.php,其中包含以下内容:

<?php
echo json_encode(array('time' => time(), 'hour', date('H')));
?>

然后是Javascript:

<script>
    $('#curr_menu_entry').click(function() {
       $.getJSON('test.php', function(data) {
           $.each(data, function(key, val) {
              $('#curr_menu_entry').append('<li id="' + key + '">' + val + '</li>');
           });
       });
    });
</script>

那行得通吗?

于 2013-06-05T18:48:55.627 回答