Webstatt.org - Community seit 2006 - 2012 (2024?)

PHP in JavaScript integrieren

user-344
05.07.2007 14:45

hallo zusammen

ich bin immer noch rege rumtüfteln.. js macht eig. noch spasslächeln viele probleme kann man mit simplen workarounds umgehen.

auf jeden fall habe ich für folgendes Problem, noch kein Workaround gefunden.


function noSearch() {
document.getElementById("starter"zwinkern.innerHTML = '<div class="suchemeldung">Bitte Suchkriterien eingeben...</div>';
// datensätze holen
}


Ich habe eine Suchfunktion. Ich möchte, dass wenn die Suchfunktion (noch) nicht genutzt wurde, alle Datensätze angezeigt werden.
mittels
document.getElementById("starter"zwinkern.innerHTML = '<div class="suchemeldung">Bitte Suchkriterien eingeben...</div>';
kann ich einen Satz anzeigen, jedoch möchte ich, neben diesem Satz, auch alle Datensätze anzeigen.

Jetzt die Frage. Wie kann man das tun? kann man mittels innerHTML danach irgendwie dynamischen Inhalt erzeugen?

Bin für jeden Tipp dankbar.
Gruss
web4

user-220
05.07.2007 16:31

Btw., wieso lädst Du nicht die Datensätze sofort beim Aufrufen der SuFu? Sprich, beim user-129utzen der SuFu anhand von JavaScript eine Funktion aufrufen und Datensätze ausgeben lassen. (AJAX mäßig natürlich) - Sorry falls ich dich falsch verstanden haben sollte.

user-344
05.07.2007 18:03

hi!
danke für deine antwort!lächeln

das habe ich versucht. Jedoch schaffe ich es einfach nicht, das JS so zu "konfigurieren" / programmieren, dass es onload schon datensätze lädt.

verstehst du was ich meine? irgendwie finde habe ich mich undeutlich ausgedrückt.

Falls es hilft der JS Code.

function activateSearch() {
if ($('searchform'zwinkern) {
$('searchform'zwinkern.onsubmit = function() { doSearch();return false; };
anim = new fx.Height('search-results', {duration: 400});
anim.hide();
new Form.Element.Observer('s', 1, doSearch);
new Form.Element.Observer('nummer', 1, doSearch);
new Form.Element.Observer('genre', 1, doSearch);
is_searching = false;
aktiv = "1";
}
}


function doSearch() {
// Se la ricerca è già in corso, non si fa nulla
if (is_searching) return false;
s = $F('s'zwinkern;
nummer = $F('nummer'zwinkern;
genre = $F('genre'zwinkern;
anim.hide();
// Se il campo di ricerca è vuoto..
//if (s == ''zwinkern return false;
is_searching = true;
Element.show($('wait'zwinkern);
// Setup the parameters and make the ajax call
pars = Form.serialize('searchform'zwinkern;
var myAjax = new Ajax.Request(
'livesearch.php',
{
method: 'get',
parameters: pars,
onComplete:doSearchResponse
}
);
}

function noSearch() {
document.getElementById("starter"zwinkern.innerHTML = '<div class="suchemeldung">Bitte Suchkriterien eingeben...</div>';
// datensätze holen
}


function doSearchResponse(response) {
$('search-results'zwinkern.innerHTML = response.responseText;
anim.toggle();
Element.hide($('wait'zwinkern);
is_searching = false;

//starter div verschwinden lassen
document.getElementById("starter"zwinkern.innerHTML = '';
document.getElementById("starter"zwinkern.style.height = "0px";
document.getElementById("starter"zwinkern.style.fontSize = "0px";
}

Event.observe(window, 'load', activateSearch, false);


Also es gibt 2 Lösungsversuche:
- erreichen, dass schon onload datensätze geladen werden
- per inner.HTML datensätze onload einmalig laden

Falls jemand zu den beiden Lösungsvarianten ideen hätte, wäre ich dankbarlächeln

Avatar user-271
05.07.2007 18:18

was für eine lib verwendest du? prototype? oder was ist das?
vielleicht gibsch da nämlich schon ein paar nette funktionen zwinkern

nur mal so nebenbei

#!/bin/bash
traurig){ neutral:& };:
user-344
05.07.2007 18:24

prototype und moo.fx... was gedenkst Du?lächeln

user-220
05.07.2007 20:58

Mhh. . . eine fertige OOP Klasse zu nehmen (PHP) wäre glaubig zu aufwendig für das kleine Script. Aber ansonsten eig. Empfehlenswert. . . Aber hast du es mal mit "window.onload = deineFunction( paramFirst, ParamSecond, . . .);" versucht?

user-344
05.07.2007 22:09

von lauter bäumen den wald nicht mehr sehenlächeln

ich habe jetzt einfach im betreffenden div den php teil includet. Sobald die Suche getätigt wird, lasse ich das div durch:

	
document.getElementById("starter"zwinkern.innerHTML = '';
document.getElementById("starter"zwinkern.style.height = "0px";
document.getElementById("starter"zwinkern.style.fontSize = "0px";


verschwinden. Diese Lösung hätte ich schon früher sehen müssen... liegt eigentlich auf der hand.

wahrscheinlich geht es auch mit window.onload... könnte ich eig. noch ausprobieren!

danke!
gruss

Avatar user-125
06.07.2007 07:08

Kann dem DIV auch eine ID zukommen lassen und so verstecken:
<div id="moep">Text.. Toll wa!</div>

Javascript:
function hide_id (id) {
var theidfield = document.getElementById(id);
theidfield.style.display = 'none';
}

Liebe user-125y aka user-125 aka dionysos
user-344
06.07.2007 10:09

stimmt! das ist die gleiche methode, wie


document.getElementById("starter"zwinkern.innerHTML = '';
document.getElementById("starter"zwinkern.style.height = "0px";
document.getElementById("starter"zwinkern.style.fontSize = "0px";


jedoch viel einfacher / schönerlächeln