[英]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 。 我在这里做错了什么?
请通过一些相关的示例/示例代码向我显示一些指导。
谢谢。
如果您要调用“ 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
首先,我将使用像Charles这样的代理来监视完整的request
和response
,此周期应该使您清楚了解正在发生的事情以及整个请求/重定向/响应周期。
确保您已将Error Reporting
一直转到Development
和Joomla DEBUG模式,这样您可能会看到错误而不是返回200
结果。
一些Joomla 3 htaccess
配置和安全扩展(AdminTools)将阻止直接访问php
文件。 如果这是问题所在,则可能表明您使用的是不安全/不正确的方式。
由于您使用的是Joomla 3.3,请在Joomla Doc的网站上通过Joomla Ajax接口阅读有关我们的信息 。
最后,当您似乎正在构建自己的组件时,您可能/应该通过您的组件并将AJAX调用传递给合适的控制器中的方法,而不是直接访问PHP文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.