Обновить div в представлении Joomla 3.x

Для моего компонента я сделал страницу проверки перед полетом, которая выполняет много проверок, но я не хочу, чтобы проверки выполнялись в начале, а иногда мне просто хочется, чтобы проверка выполнялась.

Итак, если я использую ajax, но это не решение, которое я теряю, все мои классы из фреймворка Joomla, есть ли лучший способ это одобрить?

мой tmpl / default.php выглядит так:

<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
<button onClick="xmlserverinfo()">XMLserver check</button>
</div>
<div id="j-main-container" class="span10">
<?php

// some php stuff to get the variables

?>
<div id="preflight">
<table>
<tbody>
<tr>
<td>
<table>
<tbody>
<tr>
<td colspan="3">XML server status</td>
</tr>
<tr>
<td>Naam</td>
<td>Url</td>

<?php if ($proxy == '1')
{
echo "<td>via proxy</td>";
}?>
<td>Status</td>
</tr>
<div id="xmlservers"></div>
</tbody>
<snip>

Это java-скрипт, который я использую для обновления моего div, включая ajax.js

function xmlserverinfo()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("xmlservers").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","components/com_hccxmlbeheer/views/preflightcheck/tmpl/xmlservers.php",true);
xmlhttp.send();
}

Это xmlservers.php, который создает мою таблицу, и это то, что я хочу в моем div:

<?php
/**
* @package     Joomla.Administrator
* @subpackage  com_hccxmlbeheer
*
* @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
* @license     GNU General Public License version 2 or later; see LICENSE.txt
*/

// No direct access to this file
defined('_JEXEC') or die;
// php stuff to get variablesforeach ($xmlservers as $xmlserver)
{
echo "<tr>";
echo "<td>$xmlserver[0]</td>";
echo "<td>$xmlserver[1]</td>";
if ($proxy == '1')
{
echo "<td>ja</td>";
}
$echotest = HCC::echo_test($xmlserver[1], $pluginnaam, $plugincat, '0');
if ($echotest['Status'] == 'TRUE')
{
echo "<td bgcolor=\"green\">Oke</td>";
}
else
{
echo "<td bgcolor=\"red\">mislukt</td>";
}
echo "</tr>";
}
if ($proxy == '1')
{
foreach ($xmlservers as $xmlserver)
{
echo "<tr>";
echo "<td>$xmlserver[0]</td>";
echo "<td>$xmlserver[1]</td>";
if ($proxy == '1')
{
echo "<td>nee</td>";
}
$echotest = HCC::echo_test($xmlserver[1], $pluginnaam, $plugincat, '1');
if ($echotest['Status'] == 'TRUE')
{
echo "<td>Oke</td>";
}
else
{
echo "<td>mislukt</td>";
}
echo "</tr>";
}
}
?>

Что я делаю неправильно ?

0

Решение

Мой подход был сложным, я переключился на использование jquery и поместил свое обновление не в поле зрения, а в задачу в controller.php, используя опцию format = raw, и я получаю чистые строки таблицы обратно.

В заголовке default.php я добавил:

$doc = JFactory::getDocument();
JHtml::_('jquery.framework');
$doc->addScriptDeclaration
('
jQuery(document).ready(function()
{
jQuery("#XMLserversbutton").click(function()
{
jQuery("#XMLservers").load("index.php?option=com_hccxmlbeheer&task=XMLservers&format=raw");
});
});
')

Моя кнопка выглядит так:

<button id="XMLserversbutton">XMLserver check</button>

И мой div выглядит так:

<div id="XMLservers"></div>

Таким образом, мне не нужно отдельное представление, и я получаю результат, который хочу

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]