Joomla 3.3 AJAX通话

时间:2014-11-13 09:04:22

标签: php jquery ajax joomla

以下代码位于我的 view / tmpl / edit.php 中:

<script type="text/javascript">            
            jQuery("#button").click(function(){
                jQuery.ajax({
                    url:'somefile.php',
                    type:'POST',
                    data: {action:"1"},
                    success: function(response) {alert(response);}
                });
            });        
        </script>

在同一个文件夹中,我有 somefile.php ,代码如下:

 if (isset($_POST['action'])) {
        SomeFunction();
 }

 function SomeFunction()
 {
    ...do something
 }

我的问题是,当我点击按钮时,它永远不会访问 somefile.php ,尽管脚本已执行(通过警报检查)。我在这里做错了什么?

请通过一些相关的示例/示例代码向我展示一些指示。

感谢。

1 个答案:

答案 0 :(得分:1)

  1. 如果您正在调用某些文件.php&#39;作为您的网址,它将等同于您在Joomla中浏览的当前网址+文件名。它不会映射到文件的路径。

    例如。如果您在网站首页http://example.com,则AJAX请求将转到http://example.com/somefile.php

    在页面上在http://example.com/blog/mypost01它将映射到http://example.com/blog/somefile.php

    这两个都是错误的,因为您的文件实际上是这样的:

    http://example.com/components/com_mycomponent/view/tmpl/somefile.php

  2. 首先,我会使用像Charles之类的代理来监控完整的requestresponse,这个循环可以让您清楚地知道最新情况和整个情况请求/重定向/响应周期。

  3. 确保Error Reporting一直处于Development并且启用了Joomla DEBUG模式,这样您可能会看到错误而不是返回200结果。

  4. 某些Joomla 3 htaccess配置和安全扩展(AdminTools)将阻止直接访问php个文件。如果这是问题所在,则可能表明您以不安全/不正确的方式进行此操作。

  5. 由于您使用的是Joomla 3.3,请在ing Joomla Ajax Interface上阅读有关我们的Joomla Doc's site

  6. 最后,当您构建自己的组件时,您可以/应该通过组件将AJAX调用传递给合适控制器中的方法,而不是直接访问PHP文件。