Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.javascript > #4943
| Path | csiph.com!aioe.org!news.mb-net.net!open-news-network.org!.POSTED.25.234.197.178.dynamic.wless.lssmb00p-cgnat.res.cust.swisscom.ch!not-for-mail |
|---|---|
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
| Newsgroups | de.comp.lang.javascript |
| Subject | Re: not a function |
| Date | Wed, 25 Apr 2018 21:04:44 +0200 |
| Organization | PointedEars Software (PES) |
| Lines | 117 |
| Message-ID | <5377515.lOV4Wx5bFT@PointedEars.de> (permalink) |
| References | <pbppha$jg2$1@news.albasani.net> |
| Reply-To | Thomas 'PointedEars' Lahn <cljs@PointedEars.de> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset="UTF-8" |
| Content-Transfer-Encoding | 8Bit |
| Injection-Info | gwaiyur.mb-net.net; posting-host="25.234.197.178.dynamic.wless.lssmb00p-cgnat.res.cust.swisscom.ch:178.197.234.25"; logging-data="2574"; mail-complaints-to="abuse@open-news-network.org" |
| User-Agent | KNode/4.14.2 |
| X-Face | %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&.<b';Md8`dH6iqhT)6C^.Px|[=M@7=Ik[_w<%n1Up"LPQNu2m8|L!/3iby{-]A+#YE}Kl{Cw$\U!kD%K}\2jz"QQP6Uqr],./"?;=4v |
| Cancel-Lock | sha1:tout8wr+yOFGMNFBjcAGb3yZT50= |
| X-User-ID | U2FsdGVkX1+qLv93mkERAJBeQjniz8gof5I+4Kz3ClCsaHXA0tsYTA== |
| Face | iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEXTxa4RFk5dUWANED8PFEfy7+MGBiW+n3ZNF/QuAAACaElEQVQ4jVXUwVOcMBQG8Dc7Rc4PUntdWV2uxjDpGaGeozOp1woar4jd5t/v9wLstMwsA/ntlxdCAgUc1hjTc9/JCZfGoo3wG3HdmdAWrIJRHe7GM/TmpY5VFefuVcAkkPbLIaN8rmPmjloyZxgyR3GuJ4K0AGtJ2htz8o7yqikm759fldQXaMpbDzjKAG+8v+AugVTOPO5DOjLvGtUYQwh0CPjnVMyGd+8/GfUB5nLKJDD2aLDh5HYyMDJGDwQIo2ZmZcKbowNmAdB/AzyFhrmF2MHRb0QJJfaAnwGB6orZhoykLzJtGwF/xpYxI1dswomiUj3gTuAIqCn/4C7cULwGNBtwMTk3Y4LfKB5YUaOKBKYtpplm7u0vip8tU1NWWyI/7XdcSuIDoMt6rVHMWT0DbjHPGqDqZVSa6zleLcUTcIKLoMv3ueJluALtAo9B302zPPlrtiVScRdCjXvVh3e3JpYa/jjkuC9N+LrBMlz/eAN4eQijX2EdLo6c5tGGHwLyHFtXk89dDGHwCVhG9T0S/j55AhRZgkMCmUQXJ49TnS1wnQDvw0eAh9ICeMmEFbCnPMFzjAvsWoEWEFdYEx+S0MoUZ1gT1wId8+AF3Bl2OoEu906AUHx5VLw/gXYg/x84loOah/2UYNrgiwSwGO7RfUzVBbx/kgpckumGOi6QirtD6gkLTitbnxNol47S2jVc2vsN5kPqaAHT8uUdAJM4v/DanjYOwmUjWznGfwB7sGtAtor5BgofDuzaRj4kSQAqDakTsKORa3Q3xKi3gE1fhl71KRMqrdZ2AWNNg/YOhQyrVBnb+i+nEg4bsDA+egAAAABJRU5ErkJggg== |
| Xref | csiph.com de.comp.lang.javascript:4943 |
Show key headers only | View raw
Jan Novak wrote:
> Ich habe folgenden JS Code aus bootstrap-treeview übernommen:
Nein, hast Du _nicht_, sondern Du hast *wieder* ohne Sinn und Verstand
Copy & Pray gemacht :-(
<https://github.com/jonmiles/bootstrap-treeview/blob/542f57eab636e14417216e95fa7f7049bbf3d69f/public/index.html#L567-L579>
> var initSelectableTree = $.getJSON(/include/fetch.php', function(data) {
^
> return $('#treeview-selectable').treeview({
> data: data,
> multiSelect: multiSelect,
> onNodeSelected: function(event, node) {
> $('#selectable-output').prepend('<p>' + node.text + ' was
> selected</p>');
> },
> onNodeUnselected: function (event, node) {
> $('#selectable-output').prepend('<p>' + node.text + ' was
> unselected</p>');
> }
> });
> });
>
>
> wenn ich nun
>
> var $selectableTree = initSelectableTree();
>
> aufrufe, dann erhalte ich den Fehler
>
> Uncaught TypeError: initSelectableTree is not a function
Vorher solltest Du auch schon einen Syntaxfehler erhalten.
> Was fehlt denn da noch?
Dir ist trotz des vorherigen Threads, den Du vor anderthalb Monaten hier
angefangen hattest, offenbar *immer* *noch* *nicht* klar, wie *asynchrone*
Verarbeitung funktioniert, und wie sie sich von *synchroner* Verarbeitung
unterscheidet.
function (data) { … }
als zweites Argument von $.getJSON() ist offensichtlich ein *Callback*, der
ausgeführt wird, wenn der Server auf den HTTP-Request (URI angegeben durch
das erste Argument) *geantwortet* hat.
Die Antwort vom Server trifft in der Regel ein, *nachdem* $.getJSON()
ausgeführt wurde *und* *zurückgekehrt* ist. Der Rückgabewert des Callbacks
landet also _nicht_ in “initSelectableTree”, sondern wird (in der Regel)
*weggeworfen*.
Und der Rückgabewert von jQuery.getJSON() ist, wie Du hättest nachlesen
können, _nicht_ ausführbar (callable), sondern ein Objekt, was das Promise-
Interface implementiert (ab jQuery 1.5; vorher wohl der “undefined”-Wert):
<http://api.jquery.com/jquery.getjson/>
Ich mal’s Dir nochmal als UML-Sequenzdiagramm auf (Festbreitenschriftart
verwenden).
Du willst folgendes machen:
.---------------- Client --------------.
: :
Script HTTP API Server
: : :
.-. $.getJSON() : :
: :---------------------->.-. GET /include/fetch.php HTTP/1.x :
: : : :---------------------------------->.-.
: : undefined/:: Promise : : : :
: :<- - - - - - - - - - --'-' : :
: : : :
: : DOM API function (data) HTTP/1.x 200 OK : :
: : : .-.<- - - - - - - - - - - - - - - - --'-'
: : .-.<-----------: : :
: : : : : : :
: : '-'- - - - - ->: : :
: : : '-' :
'-' : : :
: : X :
X : :
Demgegenüber machen die Bootstrap-Leute im Originalcode etwas *völlig*
*anderes*:
.---------------- Client --------------. *kein* Server
: :
:
.-.
: : (function () { … }())
: :----------------------->.-.
: : : :
: :<- - - - - - - - - - - -'-'
: :
: : initSelectableTree()
: :----------------------->.-.
: : : :
: :<- - - - - - - - - - - -'-'
: :
'-'
:
X
(Schau Dir mal an, wo “defaultData” herkommt.)
Jetzt klar?
--
PointedEars
FAQ: <http://PointedEars.de/faq> | <http://PointedEars.de/es-matrix>
<https://github.com/PointedEars> | <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail.
Back to de.comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar
not a function Jan Novak <repcom@gmail.com> - 2018-04-25 13:41 +0200
Re: not a function Sascha Hüdepohl <news@juenger-der-himmlischen-teekanne.de> - 2018-04-25 17:49 +0200
Re: not a function Jan Novak <repcom@gmail.com> - 2018-04-26 07:39 +0200
Re: not a function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2018-04-25 21:04 +0200
Re: not a function Jan Novak <repcom@gmail.com> - 2018-04-26 07:55 +0200
Re: not a function "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2018-04-28 19:50 +0200
Re: not a function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2018-04-29 01:14 +0200
Re: not a function Jan Novak <repcom@gmail.com> - 2018-04-26 08:07 +0200
Re: not a function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2018-04-29 01:30 +0200
Re: not a function Jan Novak <repcom@gmail.com> - 2018-05-02 15:06 +0200
Re: not a function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2018-05-05 01:00 +0100
csiph-web