[JS] src do pliku PHP

czy można wczytać do skryptu js plik PHP?

to jest przykład widgetu, ja zrobiłem coś podobnego w PHP i teraz trzeba go osadzić na stronce ale muszę to zrobić w JS, nie wiem jak to rozwiązać bo gdy daje atrybut src do pliku php to mi sie on w ogole nie wykonuje :smiley: zreszta trudno zeby sie wykonal w przegladarce, jakieś pomysły?

bardzo mi na tym zależy, może ktoś sie wypowie jak ten skrpt jest zrobiony z nk? przeciez on chyba korzysta z bazy

Plik php musi wygenerować kod html, tzn. wykonać się po stronie servera innej opcji nie ma (nie wiem czy o to chodziło).

Dodatkowo by osadzić go w ten sposób musi znajdować się w ramach js:

document.write('

kod html do wyświetlenia

');

tak myślałem, ale dzięki

nie wiem jak napisać tego stringa, problem z apostrofami

echo 'document.write(' <-- tu jest apostrof ale on mi konczy instrukcje echo... co zrobić?

wewnętrzne apostrofy poprzedź znakiem \

spróbuj:

var req = new XMLHttpRequest();

req.open('GET', 'plik.php', false);

req.send(null);

if(req.status == 200)

  document.write(req.responseText);

ewentualnie (stwórz plik z rozszerzeniem .php i ustaw go w atrybucie src skryptu js):

<?php

header('Content-type: text/javascript');

ob_start();

require 'plik.php';

$output = addcslashes(ob_get_contents(), '"\\');

ob_end_clean();

echo 'document.write("'.$output.'");';

?>

lub

<?php

header('Content-type: text/javascript');

$output = addcslashes(file_get_contents('http://serwer/plik.php'), '"\\');

echo 'document.write("'.$output.'");';

?>

‘plik.php’ to ścieżka do pliku php. Jeśli linki i formularze mają działać niezależnie od reszty strony to pozostaje albo AJAX (trzeba by wprowadzić trochę zmian) albo iframe.

strona jest w PHP a muszę zrobić takiego linka w js aby inni mogli to wklejać i im sie pojawi ta strona czyli taki maly widget który zrobiłem…

Teraz już nie rozumiem w czym problem. cayman3_11 podał ci gotowca :smiley:

HEJ, mam z tym kolejny problem

var req = new XMLHttpRequest();

req.open('GET', 'plik.php', false);

req.send(null);

if(req.status == 200)

document.write(req.responseText);

otóż działa mi to tylko w momencie gdy ten plik php jest na tej samej domenie, a tak nie może być, ten skrypt ma sobie pobierać ten widget z innego serwera na którym ten widget stoi, on ma go poprostu wyświetlić… Bardzo prosze o pomoc – Dodane 15.12.2010 (Śr) 21:34

<?php

header('Content-type: text/javascript');

$output = addcslashes(file_get_contents('http://serwer/plik.php'), '"\\');

echo 'document.write("'.$output.'");';

?>

Kurcze, to mi ładnie generuje kod nawet z innego serwera ale nie chce sie wygenerować z tego HTML poprostu w treści skryptu jest ta treść kodu z funkcją document.write ale on nie działa. Napewno po document.write(" maja być " a nie ’ ?

Dodane 15.12.2010 (Śr) 21:41

HMM powinno działać gdyż gdy wpisałem do tego pliku jedynie alerta to mi sie włączył

nigdy nie próbowałem i nie mogę tego przetestować, ale być może wystarczy w pliku php (tym z kodem widgetu) na początku wkleić

header('Access-Control-Allow-Origin: *');

ew. przejrzyj to i to bo mi jakoś ciężko idzie przyswajanie tego :stuck_out_tongue: tym bardziej bez możliwości sprawdzenia w praktyce

nie ma znaczenia czy tam będzie apostrof czy cudzysłów, ale addcslashes() musi właśnie ten znak escapować (a teraz jest tam ustawiony cudzysłów ")

sprawdź wygenerowany kod js, przejrzyj konsolę błędów.