我一直在寻找几个小时来解决这个问题。我有一个带有控制器的标准组件,因此:
defined('_JEXEC') or die;
jimport('joomla.application.component.controller');
jimport( 'joomla.environment.request' );
class GetajaxController extends JController
{
function test()
{
$jinput = new JInput();
$myvar = $jinput->getVar('eventname');
print_r($_REQUEST);
$a = $_GET['eventname'];
$event = JRequest::getVar( 'eventname' ) ;
$client = JRequest::getVar( 'client' ) ;
echo "CLIENT:".$client." EVENT:".$event."*".$myvar;
}
}
(我一直在尝试多种解决方案,这就是为什么那里有额外的废话但相关代码仍然存在)
因此,我从自定义模块中调用它:
$urlA = "index.php?option=com_getajax&task=test&format=raw";
$document = JFactory::getDocument();
$document->addScriptDeclaration("
function runButton() {
var data = 'eventname=aName&client=aClient';
var url='$urlA';
var request = new Request({
url: url,
data: data,
method:'post',
onSuccess: function(responseText){
document.getElementById('xml_result').innerHTML=responseText;
}
}).post('eventname=foo&client=baR'); // ORIGINALLY HAD IT AS JUST .post()
request.setHeader('eventname', 'sdfsdfsdf'); // ADDED
}
");
返回的响应仅包含硬编码的“CLIENT: ... EVENT”减去变量。换句话说,我确实得到了响应,并且整个事情的 ajax/jquery 部分工作正常,只是我似乎无法成功地将参数发送到组件。(或者至少,在组件中检索它们)
我已经触发了它,但它们不在响应中。我什至对 url 进行了硬编码,并在控制器中使用了一个简单的 $_GET ,但没有成功;
$urlA = "index.php?option=com_getajax&task=test&format=raw&event=foo&client=bar";
我已经尝试过使用和不使用 sef url。您可以从控制器中看到我尝试了各种方法来捕获传递的参数。我也试过'get'和'post'。
顺便说一句,我已经尝试了所有通常发布的解决方案,所以我认为这与 joomla 以某种只有开发人员母亲才能欣赏的晦涩方式删除 url 参数有关。
- 在萤火虫中,出现了一个“x”参数,我没有发送它似乎是空的。不知道这是否重要。
任何帮助都会很棒。
在此先感谢,杰夫