以下代码位于我的 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 ,尽管脚本已执行(通过警报检查)。我在这里做错了什么?
请通过一些相关的示例/示例代码向我展示一些指示。
感谢。
答案 0 :(得分: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
首先,我会使用像Charles之类的代理来监控完整的request
和response
,这个循环可以让您清楚地知道最新情况和整个情况请求/重定向/响应周期。
确保Error Reporting
一直处于Development
并且启用了Joomla DEBUG模式,这样您可能会看到错误而不是返回200
结果。
某些Joomla 3 htaccess
配置和安全扩展(AdminTools)将阻止直接访问php
个文件。如果这是问题所在,则可能表明您以不安全/不正确的方式进行此操作。
由于您使用的是Joomla 3.3,请在ing Joomla Ajax Interface上阅读有关我们的Joomla Doc's site。
最后,当您构建自己的组件时,您可以/应该通过组件将AJAX调用传递给合适控制器中的方法,而不是直接访问PHP文件。