0

我想将驻留在模块中的 ajax 表单的结果输出到当前显示的文章中。下面是我想要完成的截图。我想通过ajax通过模块(在sidebarA中)的表单输入来修改文章中的mysql查询。

在此处输入图像描述

以下是通过 jumi 从模块中截断的一些格式代码:

<form action="http://fsdsonline.com/menumanager/index.php/menustab/all-meals/77-component-menus/124-alcohol-n" method="post">
    <option value="AND plate = '1'">Plate FSDS only</option>
    <option value="AND plate = '1'">Prep FSDS only</option>
    <option value="">Plate and Prep FSDS</option>
    </select><br /><select style="font-size: 12px;" name="menu">
    <option value="">All Meals</option>
    <input style="font-size: 12px;" onclick="location=document.menuselector.menu.options[document.menuselector.menu.selectedIndex].value;" type="button" value="Show" /></form>
<div class="success" style="display: none;">View your menu</div>

这是通过 jumi 文章中的 php 代码。

    mysql_connect($hostname,$username, $password) OR DIE ('Unable to 
connect to database! Please try again later.');
mysql_select_db($dbname);

$plateprep        = $_POST['plateprep'];
$meal = $_POST['meal'];
$pub        = $_POST['pub'];
$avocado = $_POST['avocado'];
$alcohol = $_POST['alcohol'];


$result = mysql_query("SELECT catnum, ctgry, Shrt_Desc, `desc`,  ROUND(`Energ_Kcal`*`yield`*`qty` ) AS `cal` FROM allinnot a
LEFT JOIN allinfsds b
ON a.`NDB_No2` = b.id1
LEFT JOIN fdcat h ON b.product_type = h.unik
LEFT JOIN allinnot2 g ON a.`NDB_No2` = g.NDB_No
LEFT JOIN allincomp j ON a.`NDB_No2` = j.fsds_num
WHERE `own_id` = $user->id $plateprep $pub $meal $avocado $alcohol
ORDER BY `catnum`, `order`");


$cat = null;
$first = true;
while ($row = mysql_fetch_array($result)) {
    if ($row['catnum'] != $cat) {
       if (!$first) {
           echo '</table>'; // close the table if we're NOT the first row being output.
       }

       $first = false; // no longer the first table, so disable this check.
        echo '<p style="line-height: 12pt; font-size: 12pt;"><strong>' . $row['ctgry'] . '</strong></p>';
       echo '<table>'; // start new table
       $cat = $row['catnum'];
    }
    echo "<tr><td>" . $row['Shrt_Desc'] . "</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . $row['desc'] . "&nbsp;&nbsp;" . $row['cal'] . " cal</td></tr>";
}
?>
</table>
</body>
</html>

我认为我已经正确编码了查询,并且表单看起来不错,但是如何通过 ajax 连接两者?谢谢!!

4

2 回答 2

1

恐怕我对jumi不熟悉。

通常要执行 ajax 请求,您的 javascript 文件将对特定的 php 文件发出 ajax 请求。如果您要使用 ajax,您将需要以某种方式在您的表单中触发它。php 文件应将您想要的信息回显到发出 ajax 请求的文件。

在这种情况下,我认为 ajax 请求必须转到您嵌入了 jumi 的页面,但我不确定。

如果您打算使用 ajax,那么我建议使用 jquery 来完成。它使生活变得更加轻松。这是一个使用 jquery 发出的简单 ajax 请求的示例。

$.ajax({  
            type: "POST",  
            url: "joomla_page.php",  
            data: { 'menu': menu },   
            success: function(){  
            informationfromphp= data.menu; //This is $menu echod from php
            $('#menuid').html('<span class="food_results">Success!</span>');
            } 
        })

在您的 php 代码中,使用类似这样的内容捕获 ajax 消息

if (isset($_GET['menu'])) { 
    //do something ;
} 

然后在 php 中做一些事情(比如调用数据库)。之后,您可以使用回显将 php 中的信息返回到 ajax 文件。

echo $menu; 

请注意,这不是一个工作示例,它只是一个粗略的想法,可以帮助您入门。您会在 stackoverflow 上找到很多其他示例。

于 2012-04-17T05:15:57.437 回答
1

将 jumi 与 joomla 一起使用会给您带来路径问题:

在您的 php 代码(服务器端)中,您将拥有所有包含和要求的内容:

_使用绝对路径,使用 $_SERVER['DOCUMENT_ROOT']

_或重新定义 jumi tu 使用您的包含的路径(未经测试,在我看来 macGiver 正在修复,因为无论如何都在使用 jumi ......)。

实际上,还有另一个问题,客户端,由 joomla 选择引起:

html BASE 由 joomla 在每个页面上定义,默认情况下,base 是人类可读的 url ...因此对于 html 和 javascript 中的 url,请注意相对 uri ... 您可以使用绝对 uri .

因此,在您的情况下,使用 ajax 客户端,您必须使用绝对 url 来精确目标,并在您的 php 中,为其他文件中使用的所有资源提供绝对路径。

设法使工作成为 joomla 上的 jquery 自动完成功能,而不是 jumi 。

请注意joomla 使用 mootools,并且您只能在页面后期包含 jquery (您在 jumi 中所做的一切都将在正文中)。有时,jquery和mootols 不能很好地结合在一起:类似的使用 $ 。有时您必须使用jquery.noConflict。

我会建议只使用一种 javascript 框架,但是,有时,你必须使用旧的选择来管理......

于 2013-09-16T13:23:14.710 回答