jQuery上下文菜单根据选择填充了php内容

时间:2013-06-05 18:27:59

标签: php javascript jquery mysql contextmenu

当用户在我的网站(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.

数据库示例: database example (抱歉超大图片)

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

实施例: text&menu example

好的,所以我知道你不能只是将javascript与PHP结合起来而且它只能被解析,但我想用菜单加载iframe,数据库提取会通过使用javascript设置iframe来完成工作src包含网址中的选定单词。

然而,iFrames并不是解决此问题的好方法。

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

3 个答案:

答案 0 :(得分:2)

我需要知道您使用的插件,以便为您提供一些代码示例,但是,一般情况下,我会这样做:

  • jQuery上下文菜单中的项目必须有一个单击处理程序。当"选择"时,使用它向服务器提交AJAX请求。单击术语。
  • 确保向用户提供一些反馈(装载机或旋转器)
  • 将结果放入服务器端阵列。
  • JSON对数组进行编码并将其作为响应发送(例如echo json_encode($ output)
  • 客户端的JSON.parse(响应),你现在有一个带有结果的JS对象
  • 将这些结果放在上下文菜单中(同样,取决于您使用的插件的方式)

答案 1 :(得分:1)

AJAX是一种很好的方式来做你想做的事。

这是simple AJAX example。请注意,在第二个.PHP文件中,您可以在其中放置数据库查找等。

无论你从第二个脚本回复什么,都是通过调用javascript(第一个脚本再次)收到的,并且可以即时插入到你的上下文菜单中。以下是another example,其中详细解释了答案底部的流程。

答案 2 :(得分:0)

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

我创建了一个名为test.php的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>

那会有用吗?