Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.comp.lang.javascript > #4846

Re: JS Variable von einem Teil zum nächsten übergeben?

From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Newsgroups de.comp.lang.javascript
Subject Re: JS Variable von einem Teil zum nächsten übergeben?
Date 2017-01-11 18:09 +0100
Organization PointedEars Software (PES)
Message-ID <3162464.R56niFO833@PointedEars.de> (permalink)
References (2 earlier) <o523rr$vtk$1@news.albasani.net> <11716715.uLZWGnKmhe@PointedEars.de> <o52g21$o01$1@news.albasani.net> <2879807.44csPzL39Z@PointedEars.de> <o55jvo$3eq$1@news.albasani.net>

Show all headers | View raw


Jan Novak wrote:

> Am 10.01.2017 um 13:57 schrieb Thomas 'PointedEars' Lahn:
>> […]
> 
> Ich habe jetzt folgenden JS Code:

OK.  Bitte aber keine Tab-Zeichen verwenden, die sind überall 
unterschiedlich breit, verschwenden im Normalfall Platz (8 Leerzeichen),
und mein derzeitiger Newsreader entfernt sie leider am Zeilenanfang.
Zwei Leerzeichen sind (nicht nur im Usenet, ausser bei Python) optimal
für eine Einrückung von Quelltext.

Nachfolgend korrigiert; auch so, dass es trotz Zeilenumbruch keinen 
Syntaxfehler gibt.
  
> <script>
>   var img = document.createElement("img");
>   /* Initiale Datei für die 1. Anzeige */
>   img.src = 
> "http://localhost/archiv/upload/pdf_f7f3ffc6793915dbb6cfa17acab4cb7a.pdf";

Ein Schritt in die richtige Richtung.  Aber *nur* zur Speicherung des URIs 
brauchst Du kein img-Elementobjekt zu erzeugen.  Zumal es sich hier nicht 
einmal um eine Grafik handelt.

>   //change Funktion der DropDown Liste
>   $("select[name='fileNames']").change(function () {
>     var fileId = $(this).val();
>     var token = $("input[name='_token']").val();
>     $.ajax({
>       url: "<?php echo route('select-ajax') ?>",
>       type: 'POST',
>       data: {fileId: fileId, _token: token},
>       success: function (data) {
>         /* gibt "http://localhost/archiv/upload/test.pdf" zurück */
>         img.src = data;
>         console.log(img);
>       }
>     });
>   });
> 
>   /* funktioniert nur initial, nicht beim Wechsel eines Eintrages 
>      der DropDown Liste */
>   $("#filedata").fileinput({
>     initialPreview: img.src,

Siehe oben: Hier weist Du der Eigenschaft nur einen String zu.  Es wird so 
_nicht_ ein Bild an das Plugin gebunden (das brauchst Du aber auch nicht).

> // […]
>     initialPreviewAsData: true,
>     initialPreviewConfig: [
>       {type: "pdf", size: 123456}
>     ]
>   });
> </script>           
> 
> 
> Ich initialisiere oben das img Object mit einer PDF, damit zu
> Testzwecken irgendetwas zu sehen ist. Beim Wechsel eines Elementes aus
> der DropDown Liste wird korrekt in der Konsole geloggt, dass eine neue
> URL in das img Object geschrieben wurde, jedoch wird es im Browser vom
> Plugin nicht angezeigt (aktualisiert).
> Fehlt mir hier nur eine neue "load" Eigenschaft?

Nein, sieht nicht so aus, als ob das Plugin das unterstützt.

Wenn Du aber die Initialisierung in den success-Handler kopierst (meine 
ursprüngliche Idee), könnte es funktionieren:

    $.ajax({
      // …
      success: function (data) {
        $("#filedata").fileinput({
          initialPreview: data,
          // […]
          initialPreviewAsData: true,
          initialPreviewConfig: [
            {type: "pdf", size: 123456}
          ]
        });
      }
    });

Falls das funktioniert (und keine offensichtlich negativen Effekte hat), 
solltest Du die Initialisierung in eine Methode auslagern, der Du jeweils 
nur den Wert für die initialPreview-Eigenschaft übergibst (DRY).

>>   input.onchange = function (event) {
>>     var reader = new FileReader();
>>
>>     reader.onload = function (event) {
>>       img.src = event.target.result;
>>     };
>>
>>     reader.readAsDataURL(event.target.files[0]);
>>   };
> 
> Muss ich mich in meinem Code darum kümmern? (und wenn ja, wie?)

Wenn Du das Plugin verwendest, brauchst Du diesen Code nicht, denn das 
Plugin enthält ihn im wesentlichen und erledigt das.

-- 
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 | NextPrevious in thread | Next in thread | Find similar


Thread

JS Variable von einem Teil zum nächsten übergeben? Jan Novak <repcom@gmail.com> - 2017-01-09 08:53 +0100
  Re: JS Variable von einem Teil zum nächsten übergeben? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-09 20:44 +0100
    Re: JS Variable von einem Teil zum nächsten übergeben? Jan Novak <repcom@gmail.com> - 2017-01-10 08:52 +0100
      Re: JS Variable von einem Teil zum nächsten übergeben? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-10 11:11 +0100
        Re: JS Variable von einem Teil zum nächsten übergeben? Jan Novak <repcom@gmail.com> - 2017-01-10 12:20 +0100
          Re: JS Variable von einem Teil zum nächsten übergeben? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-10 13:57 +0100
            Re: JS Variable von einem Teil zum nächsten übergeben? Jan Novak <repcom@gmail.com> - 2017-01-11 10:50 +0100
              Re: JS Variable von einem Teil zum nächsten übergeben? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-11 14:08 +0100
                Re: JS Variable von einem Teil zum nächsten übergeben? Jan Novak <repcom@gmail.com> - 2017-01-11 14:31 +0100
                Re: JS Variable von einem Teil zum nächsten übergeben? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-11 15:34 +0100
            Re: JS Variable von einem Teil zum nächsten übergeben? Jan Novak <repcom@gmail.com> - 2017-01-11 16:46 +0100
              Re: JS Variable von einem Teil zum nächsten übergeben? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-11 18:09 +0100
                Re: JS Variable von einem Teil zum nächsten übergeben? Jan Novak <repcom@gmail.com> - 2017-01-12 10:18 +0100

csiph-web