我的脚本存在逻辑问题。关键是要在表中格式化一些行,但不应重复标题,并且应输出所有项目,而不是传递给ajax的变量。但我不知道如何解决这个问题。
function abc()
{
global $mainframe;
$db =& JFactory::getDBO();
// Check for request forgeries
if(isset($this->message)){
$this->display('message');
}
// custom: generate token for ajax request
$ajax_token = JHTML::_( 'ajax.token' );
// custom end
// JRequest::checkToken( 'get' ) or jexit( 'Invalid Token' );
$letter_raw = JRequest::getVar('val');
$letter = substr($letter_raw, -1);
$response = '<div class="no-rec">not found</div>';
$html = '';
if (!empty($letter)) {
$query = " SELECT * FROM #__glossary WHERE substr(tterm,1,1) LIKE '$letter%'";
$db->setQuery( $query );
$rows = $db->loadObjectList();
if (count($rows)) {
$header='<table class="stripeMe"><tbody><thead><tr><th>Begriff</th><th>Definition</th></tr></thead><tr>';
foreach($rows as $key => $row) {
$body='<td><span class="title">'.$rows[$key]->tterm.'</span></td><td>'.$rows[$key]->tdefinition.'</td></tr></tbody></table>';
}
$response = $header.$body;
}
$html = $response;
echo $html;
}
}
答案 0 :(得分:1)
究竟是什么问题? :)
你可能不应该把它变成一个函数,因为我猜你只是想用AJAX加载内容?
你应该添加到字符串中,不要在每一行中覆盖它。
更新,修复HTML错误
if (count($rows)) {
// CREATE TABLE AND HEAD
$body = '<table class="stripeMe"><thead><tr><th>Begriff</th><th>Definition</th></tr></thead>';
// TBODY FOR REPEAT INSIDE
$body .= '<tbody>'
foreach($rows as $key => $row) {
$body .= '<tr><td><span class="title">'.$rows[$key]->tterm.'</span></td><td>'.$rows[$key]->tdefinition.'</td></tr>';
}
$body .= '</tbody></table>';
$response = $body;
}
$html = $response;
echo $html;
答案 1 :(得分:0)
好吧,如果您将数据作为HTML传回,那么这将起作用,因此您的jquery将是:
$('#holderdiv').load('abc.php');
如果您使用的是.post .ajax .get之类的东西,那么您将需要决定将数据传回的格式,所以如果它是JSON,那么您需要将其格式化,并确保您的jQuery是被告知期待这样的回应。如果您能够具体了解您的情况以及您遇到的问题,我可以给予更多帮助。