В качестве идеального ответа на мой вопрос вижу ссылку на реально работающее расширение, в котором реализовано динамическое наполнение второго
<select>
после выбора одного из <option>
в первом <select>
.Спасибо!
<select>
после выбора одного из <option>
в первом <select>
.Там тоже пример приведён в виде отдельного php-файла. И он не работает, когда серверную сторону начинаешь заворачивать в класс. В частности вот этот код
print json_encode($result);
возвращает "Cannon modify header information - headers already sent by (здесь указание на контроллер, в котором вышеуказанный код)"Код: Выделить всё
<script type="text/javascript">
/*! Chained 1.0.0 - MIT license - Copyright 2010-2014 Mika Tuupola */
!function(a,b){"use strict";a.fn.chained=function(c){return this.each(function(){function d(){var d=!0,g=a("option:selected",e).val();a(e).html(f.html());var h="";a(c).each(function(){var c=a("option:selected",this).val();c&&(h.length>0&&(h+=b.Zepto?"\\\\":"\\"),h+=c)});var i;i=a.isArray(c)?a(c[0]).first():a(c).first();var j=a("option:selected",i).val();a("option",e).each(function(){a(this).hasClass(h)&&a(this).val()===g?(a(this).prop("selected",!0),d=!1):a(this).hasClass(h)||a(this).hasClass(j)||""===a(this).val()||a(this).remove()}),1===a("option",e).size()&&""===a(e).val()?a(e).prop("disabled",!0):a(e).prop("disabled",!1),d&&a(e).trigger("change")}var e=this,f=a(e).clone();a(c).each(function(){a(this).bind("change",function(){d()}),a("option:selected",this).length||a("option",this).first().attr("selected","selected"),d()})})},a.fn.chainedTo=a.fn.chained,a.fn.chained.defaults={}}(window.jQuery||window.Zepto,window,document);
</script>
Код: Выделить всё
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
/*! Chained 1.0.0 - MIT license - Copyright 2010-2014 Mika Tuupola */
!function(a,b){"use strict";a.fn.chained=function(c){return this.each(function(){function d(){var d=!0,g=a("option:selected",e).val();a(e).html(f.html());var h="";a(c).each(function(){var c=a("option:selected",this).val();c&&(h.length>0&&(h+=b.Zepto?"\\\\":"\\"),h+=c)});var i;i=a.isArray(c)?a(c[0]).first():a(c).first();var j=a("option:selected",i).val();a("option",e).each(function(){a(this).hasClass(h)&&a(this).val()===g?(a(this).prop("selected",!0),d=!1):a(this).hasClass(h)||a(this).hasClass(j)||""===a(this).val()||a(this).remove()}),1===a("option",e).size()&&""===a(e).val()?a(e).prop("disabled",!0):a(e).prop("disabled",!1),d&&a(e).trigger("change")}var e=this,f=a(e).clone();a(c).each(function(){a(this).bind("change",function(){d()}),a("option:selected",this).length||a("option",this).first().attr("selected","selected"),d()})})},a.fn.chainedTo=a.fn.chained,a.fn.chained.defaults={}}(window.jQuery||window.Zepto,window,document);
</script>
</head>
<body>
<select id="categories">
<option value="">Какие статьи мы можем Вам предложить?</option>
<option value="php-snippets" class="programming">PHP snippets</option>
<option value="php-oop" class="programming">PHP ООП</option>
<option value="php-work-with-images" class="programming">PHP и изображения</option>
</select>
<select id="articles">
<option value="">Статьи</option>
<option value="what-is-snippets" class="php-snippets">PHP - что такое snippets?</option>
<option value="snippets-web-sites" class="php-snippets">PHP snippets - ресурсы?</option>
<option value="php5-whats-new" class="php-oop">PHP 5 - что нового?</option>
<option value="php-code-templates" class="php-oop">PHP - шаблоны проектрирования</option>
<option value="php-uploading-images" class="php-work-with-images">PHP - загружаем изображения</option>
<option value="php-images-and-watermarks" class="php-work-with-images">PHP - размещаем watermark</option>
</select>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#articles").chained("#categories");
});
</script>
</body>
</html>
Код: Выделить всё
function getXmlHttp() {
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
Код: Выделить всё
$.ajax({
type: "POST",
url: url,
data: { ........... },
success: function (data) { ........... },
error: function ( .............) {
alert(...........);
}
});
Тем, что он устарел.
объект называется XMLHttpRequest и он не устарел. Поддерживается всеми современными браузерами и ИЕ, начиная с 10-й версии. Просто Вы привели два разных метода:
После ответа LavIgor, у меня как раз такая мысль и возникла. Изучаю внутренности jQuery...
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
Тем более в полной версии (с пробелами и всеми читабельными форматами). В phpBB уже подключена ужатая библиотека 1.11.0Истинно так. jQuery - это всего лишь обёртка для XMLHttpRequest
Естественно это был технологический пример штмл файла. а не полностью готовое решение встройки в phpbb. Странно что Вас теги <html><head> не смутили)))KimIV писал(а): а смысл снаружи тянуть jQuery? <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>