Bernhard Peissl: GET und POST (gemeinsam) ?

Beitrag lesen

Grüssi!

es geht mir jetzt primär um die suchmaschine pubmed
( http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=PubMed  ).

Da kannst Du nix (mit JavaScript) machen, wenn das Formular mit
method="POST" übergeben wird, den String kannst Du einfach nicht
generieren, weil es ihn nicht gibt :-/

Doch, Was per POST geht das geht auch per Pede ;-)

Im Formular stehen alle felder (=parmeter die ans script übergeben werden können) drin! Man braucht sie sich dann nur raussuchen und an die URL in gewohnter Manier dranhängen. Das Formular man auch über GET (Eintippen der Url) abschicken.

es gibt zwei wichtige Parameter im Formular: 'db' und 'term' mit DB wählt man die Datenbank aus, in der gesucht werden soll:

<select name="db" onChange="DbChange(this);">
<option selected value="PubMed">PubMed</option>
<option value="Protein">Protein</option>
<option value="Nucleotide">Nucleotide</option>
<option value="Structure">Structure</option>
<option value="Genome">Genome</option>
<option value="PopSet">PopSet</option>
<option value="OMIM">OMIM</option>
<option value="Taxonomy">Taxonomy</option>
</select>

=> 1.) db=PubMed (beliebige Datenbank auswählen)

'term' steht no-na höchstwahrscheinlich für den Term nach dem gesucht werden soll.

<input name="term" size="45" type="TEXT" onKeyPress="KeyPress('',event)" value="">

=> 2.) term=foo

Weitere Parameter (Konstanten):
cmd=search (selbsterklärend)
orig_db=Pubmed (was auch immer dieses PubMed ist, scheint jedenfalls so ne Art defaultwert zu sein)

Beispiel:
http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=Protein&term=foo
oder gleichwertig:
http://www.ncbi.nlm.nih.gov:80/entrez/query.fcgi?orig_db=PubMed&cmd=search&db=Protein&term=foo

Das Javascipt scheint für das Abschicken des Formulars anscheinend nicht zwingend notwendig zu sein. Obwohl das ganze sehr kryptisch abläuft! Wenn man auf den 'Go'-Button klickt wird die Funktion Go(command) aufgerufen, die dann den Query-String zusammenbaut. Abgeschickt wird das ganze aber dennoch mit POST. Wenn auch direkt aus der Funktion heraus mit submit()!

var inGo=false; function Go(cmd)
{
 inGo=true;
 var frm = document.frmQueryBox;
 var sel = frm.db;
 frm.cmd.value = cmd;
 var q = frm.action;
 frm.action = q.substring(0, q.indexOf('?'))+'?CMD='+escape(cmd)+'&DB='+sel.options[sel.selectedIndex].value;
 frm.submit();
 inGo=false;
}

hmmmm .... rätselhaft! Denn ich wusste bisher nicht, dass man POST und GET mischen kann (eine formaction mit Parameter als POST verschicken) z.b.

<form action="http://www.i1.com?query.pl?p=1&q=2" method="post">
...
</form>

Muss das script dann stdin _und_ Query-String auslesen ?!?

lg bernhard -- der solche spionageaktionen recht gern hat ;-)