2013-08-06 27 views
5

EDIT: Chức năng của tôi bị hỏng, với /n trong đó. Cảm ơn woofmeow đã hướng dẫn tôi đặt câu hỏi về chức năng của tôi!Sử dụng PHP để tải Javascript

Tôi mới tham gia lập trình. Tôi đã cố gắng hết sức mình và tôi đã học được rất nhiều trong vài tháng qua (một đống ở đây!) Nhưng tôi bị bối rối.

Tôi có một tập lệnh PHP gọi từ một tập lệnh PHP khác và tôi không thể lấy mã để thực sự chạy. Nó được sử dụng để chạy, sau đó tôi đã thay đổi một số điều và không lưu các thay đổi, tôi không chắc chắn những gì tôi đã làm. Tôi biết, tôi biết, sai lầm tân binh (tôi đã học được từ nó!). Javascript hiển thị tốt trên nguồn trang xem nhưng không chạy nữa.

Đây là mã nguồn trang web, có thể nó là đơn giản:

<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> 

Đây là PHP: Kịch bản show_users gửi này vào trình xem:

$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; 

Các PHP trong HTML KHÔNG được thay đổi từ khi nó hoạt động:

<?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; 
} 
?> 

Và cuối cùng, xem kịch bản cung cấp cho chúng tôi mã nguồn trang web của chúng tôi (Lưu ý: $ embedded_javascript là $ delete_user_script):

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

Khi tôi chuột lên ảnh để xóa người sử dụng, nó vẫn cho thấy sự liên kết đúng kịch bản ("javascript: delete_user (% d) ", trong đó% d là user_id) nhưng nó giống như hàm không được xác định nữa, không có gì xảy ra. Bất kỳ ý tưởng được đánh giá rất cao! Cảm ơn!

+0

trộn php và js của bạn lên. một là phía máy chủ, bên kia là phía máy khách –

+0

Có thể đăng liên kết trực tiếp hoặc liên kết đến một fiddle (http: // jsfiddle.net /) hiển thị mã được hiển thị - với bất kỳ điều gì nhạy cảm bị tràn ra ngoài hoặc mã được hiển thị được sao chép từ Xem Nguồn. Cá nhân tôi không thể hình dung toàn bộ hình ảnh theo cách này. –

+0

Tôi nghi ngờ bạn đang chèn tập lệnh của mình để xác định hàm 'delete_user' của bạn sau tập lệnh gọi hàm đó. Nhưng tôi không thể nói mà không nhìn thấy toàn bộ sự việc. Sử dụng phpfiddle để cho chúng tôi thấy những gì bạn đang làm http://phpfiddle.org/ – deltree

Trả lời

3

Về cơ bản, câu hỏi if của bạn sai (ngay cả trong biến số $delete_user_script). Kể từ khi nó bắt đầu trên một dòng mới, thông dịch viên sẽ giả định một số ; ở cuối của nó và do đó ngắt lời tuyên bố if của bạn.

Chức năng của bạn có này

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

Nó phải như thế này

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

Đôi khi nó chỉ là một sai lầm weeny teeny. Hy vọng rằng sẽ giúp :)

EDIT 1: đây là một lỗi trong câu hỏi origianally đăng trong javascript và php mã. Bây giờ nó được chỉnh sửa để phản ánh rằng if không bị hỏng. EDIT 2: Tôi được cho biết điều này đã giúp giải quyết vấn đề, vì vậy tôi sẽ giữ câu hỏi này tại đây. Hy vọng nó cũng giúp người khác. PS: Nếu ai đó muốn nội dung này bị xóa, hãy cho tôi biết.

+0

Hai mẫu mã này khác nhau như thế nào ?! –

+1

@ChuckUgwuh một là với một linebreak và khác là không. Trong dấu chấm phẩy javascript là tùy chọn. Vì vậy, nó giả định một ';' ở cuối và phá vỡ chức năng. – woofmeow

+0

Cảm ơn, nhưng mã thực sự là 'hàm delete_user (user_id) {if (xác nhận (" Bạn có chắc chắn muốn xóa người dùng này không? "+" \ NKhông thực sự quay lại! ")) {Window.location =" delete_user .php? user_id = "+ user_id;}}' trong trang của tôi, tất cả một câu. Vì vậy, tat không phải là lừa (trừ khi đó là sai là tốt!). –

0

Hãy thử điều này thay vì những gì bạn có bây giờ trong kịch bản của bạn:

$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; 
    } 
}"; 
Các vấn đề liên quan