Hi,
Stichwort AJAX. Mit dem jQuery-Framework ist es z.B. ziemlich einfach.
"Mitohne" dem jQuery-Framework-Geschwuchtel ist es auch einfach.
Vergleiche: 20 Zeilen gegen ein ganzes Framework.
man will nur selten "nur" einen AJAX-Request senden. Und dann implementiert man eben das nächste "kleine bisschen" uswusf, bis man große Teile eines Frameworks nachgebaut hat inkl. hunderter neuer Bugs.
Abgesehen von der Tatsache, dass dein Code furchtbar schlecht zu testen ist und quasi gar nicht wiederverwendbar. Als Gegenbeispiel mal ein Beispiel mit dem Angular-Framework, was m.E. gut zu lesen ist:
HTML:
<!doctype html>
<html>
<head>
<meta charset="utf-8"
<title></title>
</head>
<body ng-app="MyModule" ng-controller='RandomTextController'>
{{ randomText }}
<output ng-hide="! error">{{ error }}</output>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>
<script src="scripts/main.js"></script>
</body>
</html>
JavaScript:
var app = angular.module('MyModule', []);
function RandomTextController($scope, backendService, $window) {
$scope.randomText = '';
$scope.error = undefined;
loadText();
$window.setInterval(loadText, 2000);
function loadText() {
backendService.getRandomText().then(function(data) {
$scope.randomText = data.data;
}, function(err) {
$scope.error = err;
});
}
}
RandomTextController.$inject = ['$scope', 'backendService', '$window'];
app.controller('RandomTextController', RandomTextController);
app.factory('backendService', ['$http', function($http) {
return {
getRandomText : function() {
return $http.get('/randomText.php')
}
};
}]);
Man sollte sich nicht von der Länge täuschen lassen. Es ist länger, weil ich das Model ($scope in RandomTextController) und die Art und Weise, wie man die Zufallstexte abfragt, voneinander getrennt habe.
In den Service "backendService" kann man beliebig weitere Services hineintun, und mit Dependency Injection kann man diesen Service bequem in eigene Controller einfügen. Weiterhin kann man ohne weiteres zum Testen einen Mock-backendService einführen, welcher keinen HTTP-Requests macht.
Bis die Tage,
Matti