在插件中:
echo "<script type='text/javascript'>
$.noConflict();
$(function(){
jQuery('.aa').click(function(){
jQuery.ajax({
type:'POST',
url:'/ajax.php',
data:'articleId='+articleId,
success: function(){
alert('yes');
},
error: function(){
alert('no');
}
});
});
});
</script>";
ajax.php:
<?php
defined('_JEXEC') or die('Restricted Access' . __FILE__);
$db = JFactory::getDBO();
$user = JFactory::getUser();
extract($_POST);
$db->setQuery('SELECT * FROM `#__c` WHERE id = "'.$articleId.'"');
$db->setQuery('SELECT a FROM `#__u` WHERE user_id = "'.$user->id.'" AND a IN ('.$articleId.')');
$a = $db->loadRowList();
$a_array = array();
if (!$a){
$a_array[] = $articleId;
$combined_a = implode(",", $a_array);
$Updatesql = "UPDATE `#__c` SET b=1 WHERE id = ".$articleId;
$db->setQuery($Updatesql);
$db->query();
}
?>
我将ajax.php放在我的joomla文件夹中:/public_html/ajax.php
如何才能访问并执行ajax.php?
谢谢!
答案 0 :(得分:0)
要访问外部文件,您无需输入
defined('_JEXEC') or die('Restricted Access' . __FILE__);
刚刚从脚本中删除它,它将起作用。
答案 1 :(得分:0)
如前所述,第一行是您收到消息的原因:
defined('_JEXEC') or die('Restricted Access' . __FILE__);
Joomla的标准方法是确保只通过Joomla CMS框架访问PHP文件,即通过它index.php
或/administrator/index.php
。
通过这些index.php
路由所有请求允许Joomla做几件事:
如果您要使用Joomla框架功能,则第3点是必不可少的:
$db = JFactory::getDBO();
$user = JFactory::getUser();
返回Database对象和当前用户对象。我确定您可以看到为什么不控制对数据库的访问或用户详细信息是非常糟糕的事情
根据您正在使用的Joomla版本,有几种不同的方式可以从您的自定义扩展程序向Joomla CMS进行AJAX调用,例如在3.2中添加一个新的&#34; Joomla Ajax Interface&#34;被添加以暴露很多Joomla内容。
鉴于可用的方法种类繁多,我建议您阅读answer provided网站上非常好的Joomla Q&A StackExchange。