【问题标题】:Using jquery with Ajax in a Joomla 2.5 component在 Joomla 2.5 组件中使用带有 Ajax 的 jquery
【发布时间】:2012-07-27 10:03:08
【问题描述】:

我很难弄清楚我将 Ajax 和服务器代码放在 Joomla 组件中的什么位置。我在 Joomla part 2 docs 之后创建了一个简单的 hello world 组件(我不需要任何其他东西,只是一个简单的组件)。

现在我正在尝试使用简单的jquery/ajax tutorial 在 jquery 中添加 Ajax 代码。所以我将此代码添加到:

components/com_mycomponent/views/mycomponent/tmpl/default.php

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<html>
<head>
  <title>Ajax with jQuery Example</title>

<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/JavaScript">
  $(document).ready(function(){
    $("#generate").click(function(){
      $("#quote p").load("script.php");
    });
  });
  </script>
<style type="text/css">
    #wrapper {
      width: 240px;
      height: 80px;
      margin: auto;
      padding: 10px;
      margin-top: 10px;
      border: 1px solid black;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="wrapper">
    <div id="quote"><p> </p></div>
    <input type="submit" id="generate" value="Generate!">
  </div>
</body>
</html>

在同一目录中,我添加了用于服务器端处理的 script.php 文件。同样,仅来自教程:

<?php  
header("Cache-Control: no-cache");  
// Ideally, you'd put these in a text file or a database.    
// Put an entry on each line of 'a.txt' and use $prefixes = file("a.txt");  
// You can do the same with a separate file for $suffixes.  
$prefixes = array('Mashup','2.0','Tagging','Folksonomy');  
$suffixes = array('Web','Push','Media','GUI');  
// This selects a random element of each array on the fly  
echo $prefixes[rand(0,count($prefixes)-1)] . " is the new "    
   . $suffixes[rand(0,count($prefixes)-1)];  
// Example output: Tagging is the new Media  
?> 

我猜我指定 script.php 的方式不对,因为我在访问组件时得到了生成按钮:

http://mysite.com/index.php?option=com_mycomponent

编辑:没有注意到非常关键的错误。我收到未找到错误:http://mysite.com/script.php。这显然不存在。我在哪里把这个放在我的组件上?请记住,使用 ajax 创建组件的全部意义在于,我可以在 script.php 中使用 joomla 框架。例如拨打电话如:$user =&amp; JFactory::getUser();

提前致谢。

【问题讨论】:

    标签: jquery ajax joomla joomla2.5


    【解决方案1】:

    不要使用.Load() 方法,而是尝试在您的点击处理程序中使用它。

    $.ajax({
      url: 'script.php',
      success: function(data) {
        $('#quote p').html(data);
      }
    });
    

    【讨论】:

      【解决方案2】:

      尝试使用

      components/com_mycomponent/views/mycomponent/tmpl/script.php 在加载函数中

      【讨论】:

        【解决方案3】:

        1- 将 script.php 的内容放在组件主(重要)控制器的公共函数中,例如ajaxit().

        2- 将您的点击处理程序修改为以下内容:

        $.ajax({
           url: 'index.php?option=com_mycomponent&view=mycomponent&task=ajaxit&format=raw',
           success: function(data) {
               $('#quote p').html(data);
           }
        

        });

        【讨论】:

          猜你喜欢
          • 2013-01-04
          • 1970-01-01
          • 2011-03-10
          • 1970-01-01
          • 1970-01-01
          • 2013-03-10
          • 2012-09-23
          • 2013-04-07
          • 2012-07-30
          相关资源
          最近更新 更多