繁体   English   中英

Joomla 3.3 AJAX呼叫

[英]Joomla 3.3 AJAX call

以下代码在我的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. 如果您要调用“ somefile.php”作为您的URL,该URL等于您在Joomla中浏览的当前URL +文件名。 它不会映射到文件的路径。

    例如,如果您位于网站的首页上,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,请在Joomla Doc的网站通过Joomla Ajax接口阅读有关我们的信息

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM