【发布时间】:2016-08-01 21:13:39
【问题描述】:
我在前端 joomla 站点使用 Ajax,但不幸的是它没有运行。这是我的代码:
/components/com_prova/js/dashboard.js
$.ajax({
url: "index.php?option=com_prova&task=ajaxraw.updateReserve&format=raw",
data: { robotId: idRobot, reserved: book}
}).done(function(response) {
console.log(response);
});
/components/com_prova/controllers/ajaxraw.php
<?php
defined('_JEXEC') or die( 'Restricted access' );
jimport('joomla.application.component.controller');
jimport('functions.php');
class MycomponentControllerAjaxraw extends JController
{
function updateReserve(){
$booked = JRequest::getVar('reserved');
$robotId = JRequest::getVar('robotId');
$db_external=db_ext();
$query = $db_external->getQuery(true);
$query = 'UPDATE robots SET booked='.$booked.' WHERE id='.$robotId;
$db_external->setQuery($query);
$db_external->query();
}
}
?>
我收到此错误:
jquery-1.12.3.min.js:4 GET http://xxxxxxxx/xxxxxxx/index.php?option=com_prova&task=ajaxraw.updateReserve&format=raw&robotId=1&reserved=1&lang=it 500 (Internal Server Error)
我已经阅读了不同的帖子,但没有任何效果....请帮助!
更新
function db_ext(){
$option = array();
$option['driver'] = 'mysql'; // Database driver name
$option['host'] = 'xxxxxx'; // Database host name
$option['user'] = 'xxxxxxx'; // User for database authentication
$option['password'] = 'xxxxxxxx'; // Password for database authentication
$option['database'] = 'xxxxxxxxx'; // Database name
$option['prefix'] = ''; // Database prefix (may be empty)
$db_external = &JDatabase::getInstance( $option );
return $db_external;
}
更新调试
如果我去
index.php?option=com_prova&task=ajaxraw.updateReserve&format=raw&robotId=2&reserved=1&lang=en
我有这个错误
Invalid controller: name='ajaxraw', format='raw'
有人可以帮助我吗?
【问题讨论】:
-
Request已弃用。请使用JInput。您还应该使用Joomla's API properly 进行数据库查询 -
index.php中有什么内容?该文件似乎正在生成 500 错误。 -
@Marcus -
index.php是 Joomla 的核心文件,应用程序从中执行。那不会是问题;) -
@Lodder 输入法没问题。我也试过 $_REQUEST 但问题是一样的。我已经用 db_ext() 函数更新了帖子
-
@Marcus Lodder 是对的,问题不在 index.php 中 :(