JavaScript in php datei laden

master_1

Mitglied
Hi Jungs !

Ich habe ein Problem welches ich schwer erklären kann. Ich versuchs mal :)

Es ist eine index.php vorhanden welche ein Suchergebnis ( nach Abfrage ) in einem Div auswirft. Dafür wird eine suche.php benötigt und eine js Datei wobei beides nicht in der index includet ist. Da Suchergebnis wird in der js geregelt und von dort in den Div in die index geladen.

Mein Problem ist jetzt das ich für das Suchergebnis einen js - jquery Scroller eingebaut habe, aber dieser nicht funkt weil ich nicht weiss wo oder wie ich das

Code:
<script type="text/javascript" src="js/enscroll-0.6.1.min.js"></script>

in die suche.php, oder in die js Datei bringe das dies dann beim Ergebnis greift.

In der suche.php habe ich mal den Div per echo drinn

Code:
echo "<div id=\"scrollbox3\">";

Somit bekomme ich beim Suchergebnis zwar den Div, aber das js - yquery + der Style fehlt mir.

Die suche.php weiss nix vom Scroller CODE
thumbsup.png


Für eine Hilfestellung wäre ich dankbar !

Lg
 
Hallo,

hast du schon versucht, das Skripttag im PHP-Code einfach auszugeben?
PHP:
echo "<script type='text/javascript' ...";
(Natürlich könntest du auch einfach das PHP-Tag schließen, das Skripttag aufführen und PHP mittels <?php wieder beginnen lassen.)

Kleine Anmerkung: Eigentlich sollte man darauf achten, dass die Skripttags vor dem schließenden Bodytag aufgeführt werden.
 
Was heißt "Inhalt der JS"?

Naja die js ist eine Datei mit Codes und diese werden in die index geladen. Da steht dann in der index

Code:
$(function(){  
       var $search = $('#search');

usw.

Ich zeig mal einen Teil der suche.php

Code:
<?php
header('Content-Type: text/html; charset=utf-8');
//header('Content-type: link href="style/style.css" rel="stylesheet" text/css');
include("functions.php");
include("config.php");

if(empty($_GET['search_query']) || $_GET['search_query']=="Suche nach Songs, Interpreten, Genres") {

      }
    else
      {
          echo "<div id=\"suchergebnis\"></div>";
          echo "<div id=\"scrollbox3\">";

der scrollbox3 Div ist bei der Ausgabe in der index drinn und auch das Suchergebnis aber ohne jede Funktion ( Scroller ) weil die benötigte js -jquery Datei für den Scroller nicht geladen wird.

und ein Teil der js Datei wo die Suche abgefragt, ausgegeben wird sieht so aus

Code:
var content = searchRequest.responseText;
          document.getElementById('search-results-box').innerHTML = content;
          $('#top-10-box').addClass('invisible');
          $('#search-results-box').removeClass('invisible'); 
          $('.buttons').removeClass('invisible');
 
       }


und in der index kommt das Suchergebnis hier rein

Code:
<div id="search-results-box" class="invisible"></div>

die index hätte ja alle wichtigen Parameter, aber weil ich die suche.php nicht in die index include greift da nix drauf zu und ich weiss nicht wo ich das dann machen soll !?

Müsste ja in die suche.php oder in die js Datei nehm ich an.

Lg
 
Ich starte noch einen Versuch der weniger verwirrend ist ( hoffe ich ) !

Das Suchergebnis wird mit .innerHtml eingebunden und dabei werden <script> Tagags ingnoriert, bezw. nicht ausgeführt und da liegt mein Problem.

Ich müsste in diesen Code

Code:
 function getSearchResults() {

switch (searchRequest.readyState) {

case 4:

if (searchRequest.status != 200) {

alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:" + request.status);

} else {

var content = searchRequest.responseText;

document.getElementById('search-results-box').innerHTML = content;

$('#top-10-box').addClass('invisible');

$('#search-results-box').removeClass('invisible');

$('.buttons').removeClass('invisible');

}

break;

default:

break;

}

}

folgendes

Code:
js/enscroll-0.6.1.min.js

integrieren. Aber nicht das der Inhalt dieser Datei geholt wird sondern das die js Datei ausgeführt wird.

Ich denke es geht mit der jQuery-Funktion .load() - die hat einen Parameter, bei dem man einstellen kann, ob die <script>s ausgeführt werden sollen oder nichi. Da bräuchte ich Hilfe.

Lg
 
Hi,

mit der ajax-Methode und dem dataType "html" sollten Scripts beim Einbinden in das Dokument aufgelöst/ausgeführt werden.

Beispiel:
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Demonstration page</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
(function($){
    $(function(){
        var button = $('button.fill');

        button.on('click', function(){
            $.ajax({
                type: "POST",
                url: "include.html",
                dataType: 'html',
                data: {}
            })
            .done(function(msg, status, xhr) {
                // Inhalt in Dokument einbinden
                $('#test').html(xhr.responseText);
            });
        });
    });
})(jQuery);
</script>
</head>
<body>
    <button class="fill">fill</button>
    <div id="test">Inhalt</div>
</body>
</html>
Und das zugehörige include.html:
HTML:
<div>
    <script>
        console.log('eingefuegt');
    </script>
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/money.js/0.1.3/money.js"></script>
</div>
Wird der Button gedrückt, wird in der Konsole ersichtlich, dass "eingefügt" ausgegeben wird. Nachdem das zweite Script fertig geladen wurde, zeigt die Eingabe von fx gefolgt von der Return-Taste, dass eine Funktion zur Verfügung steht, die es nach dem Laden des Dokuments noch nicht gab. Daraus folgt, dass das externe Script geladen wurde.

Damit sollte das Prinzip ausreichend erklärt sein.

Ciao
Quaese
 
Ich möchte mich bei euch für die Hilfestellung bedanken !

Habe es hingebracht mit einer

Code:
$(document).ready(function() {

Lg
 

Neue Beiträge

Zurück