2013-08-06 5 views
5

EDIT: Моя функция была сломана, с /n в ней. Спасибо woofmeow за то, что побудили меня подвергнуть сомнению мою функцию!Использование PHP для загрузки Javascript

Я новичок в программировании. Я старался изо всех сил, и за последние несколько месяцев я многому научился (куча здесь!), Но я в тупике.

У меня есть PHP-скрипт, который вызывает из другого PHP-скрипта, и я не могу получить код для фактического запуска. Раньше это выполнялось, затем я менял некоторые вещи и не сохранял изменений, я не уверен, что сделал. Я знаю, я знаю, ошибка новобранец (я узнал от этого!). Javascript отлично отображается на странице просмотра страницы, но больше не запускается.

Вот исходный код страницы, может быть, это так просто:

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

Вот PHP: Сценарий show_users посылает это в зрителя:

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

РНР в HTML не был изменен с момента его работы:

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

И, наконец, просмотр сценарий, который дает нам наш исходный код страницы (Примечание: $ embedded_javascript составляет $ delete_user_script):

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

Когда я мыши на изображение, чтобы удалить пользователя, он по-прежнему показывает правильную ссылку сценария ("JavaScript: delete_user (% d) ", где% d - user_id), но это похоже на то, что функция больше не определена, ничего не происходит. Любые идеи приветствуются! Благодаря!

+0

ваше смешивание PHP и JS вверх. одна сторона сервера, другая сторона клиента –

+0

Могла бы опубликовать прямую ссылку или ссылку на скрипку (http: // jsfiddle.net /), который отображает визуализированный код - с чем-либо чувствительным отлаженным, или визуализированный код, скопированный из View Source. Я лично не могу представить всю картину таким образом. –

+0

Я подозреваю, что вы вставляете свой скрипт для определения функции 'delete_user' после скрипта, который вызывает эту функцию. Но я не могу сказать, не видя всего этого. Используйте phpfiddle, чтобы показать нам, что вы делаете. Http://phpfiddle.org/ – deltree

ответ

3

В основном ваш оператор if ошибочен (даже в переменной $delete_user_script). Так как он начинается с новой строки, интерпретатор будет принимать ; в конце его и, таким образом, ваш оператор if ломается.

Ваша функция имеет этот

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

Это должно быть таким образом

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

Иногда его просто маленькая крохотная ошибкой. Надежда, что помогает :)

EDIT 1: это была ошибка в origianally размещен вопрос в яваскрипт и PHP кода. Теперь он был отредактирован, чтобы отразить, что if не сломан. EDIT 2: Мне сказали, что это помогло решить проблему, поэтому я буду держать этот вопрос здесь. Надеюсь, это тоже поможет другим. PS: Если кто-то захочет этого удалить, дайте мне знать.

+0

Как эти два примера кода отличаются? –

+1

@ChuckUgwuh один с разрывом линии, а другой нет. В javascript точка с запятой не является обязательной. Таким образом, он принимает ';' в конце и нарушает функцию. – woofmeow

+0

Спасибо, но код на самом деле 'function delete_user (user_id) {if (подтвердить (« Вы уверены, что хотите удалить этого пользователя? »+« \ NТеперь не вернется! »)) {Window.location =" delete_user .php? user_id = "+ user_id;}}' на моей странице, все одно предложение. Так что тат не был трюком (если это не так!). –

0

Попробуйте это вместо того, что у вас есть сейчас в вашем скрипте:

$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; 
    } 
}"; 
Смежные вопросы