2013-08-06 16 views
5

EDYCJA: Moja funkcja została zerwana, z /n w nim. Dzięki, Woofmeow za prowadzenie mnie do zakwestionowania mojej funkcji!Używanie PHP do ładowania Javascript

Jestem nowy w programowaniu. Próbowałem wszystkiego najlepszego i wiele się nauczyłem w ciągu ostatnich kilku miesięcy (kilka tutaj!), Ale jestem zaskoczony.

Mam skrypt PHP, który wywołuje z innego skryptu PHP i nie mogę uzyskać kodu do uruchomienia. Kiedyś biegał, potem zmieniłem pewne rzeczy i nie zapisałem zmian, nie jestem pewien, co zrobiłem. Wiem, wiem, błąd debiutanta (nauczyłem się tego!). JavaScript wyświetla się poprawnie na źródle strony widoku, ale już się nie uruchamia.

Oto źródło strony, być może jest to takie proste:

<script type="text/javascript"> 
function delete_user(user_id) 
{if (confirm("Are you sure you want to delete this user?" + "\nThere's really no going back!")) {window.location = "delete_user.php?user_id=" + user_id;}}</script> 

Oto PHP: Skrypt show_users wysyła to do widza:

$delete_user_script = <<<EOD 
function delete_user(user_id) 
{ 
    if (confirm("Are you sure you want to delete this user?" 
       + "\nThere's really no going back!")) 
    { 
     window.location = "delete_user.php?user_id=" + user_id; 
    } 
} 
EOD; 

PHP w HTML nie została zmieniona od kiedy działa:

<?php 
while ($user = mysql_fetch_array($result)) 
{ 
    $user_row = sprintf("<li><a href='show_user.php?user_id=%d'>%s %s</a>(<a href='mailto:%s'>%s</a>)<a href='javascript:delete_user(%d);'><img class='delete_user' src='../images/delete.png' width='15' /></a></li>", 
    $user['user_id'], 
    $user['first_name'], 
    $user['last_name'], 
    $user['email'], 
    $user['email'], 
    $user['user_id']); 

    echo $user_row; 
} 
?> 

I wreszcie, Oglądasz skrypt, który daje nam nasze źródło strony (Uwaga: $ embedded_javascript jest $ delete_user_script):

if (!is_null($embedded_javascript)) 
{ 
    echo '<script type="text/javascript">' . $embedded_javascript . '</script>'; 
} 

Kiedy myszy na obrazek, aby usunąć użytkownika, to nadal pokazuje prawidłowy odnośnik Script ("javascript: delete_user (% d) ", gdzie% d jest identyfikatorem użytkownika), ale wygląda na to, że funkcja nie jest już zdefiniowana, nic się nie dzieje. Wszelkie pomysły są bardzo cenne! Dzięki!

+0

Twój php i js mieszanie się. jeden jest po stronie serwera, drugi po stronie klienta –

+0

Może opublikować link na żywo lub łącze do skrzypiec (http: // jsfiddle.net /), który pokazuje renderowany kod - z wszystkimi wrażliwymi wyblakłymi literami lub renderowanym kodem skopiowanym z View Source. Osobiście nie mogę wizualizować całego obrazu w ten sposób. –

+0

Podejrzewam, że wstawiasz swój skrypt, aby zdefiniować funkcję 'delete_user' po skrypcie wywołującym tę funkcję. Ale nie mogę powiedzieć, nie widząc tego wszystkiego. Użyj phpfiddle, aby pokazać nam, co robisz http://phpfiddle.org/ – deltree

Odpowiedz

3

Zasadniczo instrukcja if jest niepoprawna (nawet w zmiennej $delete_user_script). Ponieważ zaczyna się on w nowej linii, interpreter przyjmie na końcu ; i tym samym złamie twoją instrukcję if.

Twoja funkcja ma to

if (confirm("Are you sure you want to delete this user?" 
       + "\nThere's really no going back!"))

To powinno być w ten sposób

if (confirm("Are you sure you want to delete this user?" + "\nThere's really no going back!"))

Czasami jej tylko malusieńki weeny błędem. Nadzieję, że pomoże :)

EDIT 1: to był błąd w pytaniu origianally zamieszczonych w javascript i php kod. Teraz został zmodyfikowany, aby odzwierciedlić fakt, że if nie jest uszkodzony. EDIT 2: Powiedziano mi, że pomogło to rozwiązać problem, więc zatrzymam to pytanie tutaj. Mam nadzieję, że pomaga także innym. PS: Jeśli ktoś chce tego usunąć, daj mi znać.

+0

Czym różnią się te dwie próbki kodu ?! –

+1

@ChuckUgwuh jeden jest z linebreak, a drugi nie. W średniku javascript jest opcjonalny. Więc zakładając ";" na końcu i przerywając funkcję. – woofmeow

+0

Dzięki, ale kod jest w rzeczywistości 'function delete_user (user_id) {if (confirm (" Czy na pewno chcesz usunąć tego użytkownika? "+" \ NT naprawdę nie ma powrotu! ")) {Window.location =" delete_user .php? user_id = "+ user_id;}}' na mojej stronie, wszystkie jedno zdanie. Więc tat nie był lewą (chyba, że ​​to też jest złe!). –

0

Spróbuj zamiast tego, co masz teraz w swoim skrypcie:

$delete_user_script = "". 
"function delete_user(user_id) 
{ 
    if (confirm(\"Are you sure you want to delete this user?\" + \"\\nThere's really no going back!\")) 
    { 
     window.location = \"delete_user.php?user_id=\" + user_id; 
    } 
}"; 
Powiązane problemy