2014-08-30 2 views
0

У меня есть форма, проверяющая, существует ли файл на сервере, и если да, то он служит пользователю. Все это делается через PHP. Однако, если файл не найден, я хотел бы использовать jquery для некоторой клиентской стороны. Вот почему, если файл не существует, я вызываю echo и скрипт jquery. Проблема в том, что jquery не выполняется?вызов jquery внутри php

 if (isset($_POST['download'])) 
    { 

     if (file exists) 
     { 
      //serve it to the user 

     } 
     else 
     { 
      //these lines do not get executed. The page simply reloads after post method 
      echo"<script> 

      $('#collapseOne').show(); 
      var content = $('#s').val(); 
      $('#p').val(content); 

      </script>"; 
     } 
    ?> 

ответ

1

Поместите свой скрипт внутри $(function(){});

$(function(){ 
    $('#collapseOne').show(); 
    var content = $('#s').val(); 
    $('#p').val(content); 
}); 

Скрипт выполняется до того, как дом будет готов

0

Вы должны сделать JavaScript в успех обратного вызова вызова Ajax.

success: function(resp) { 
    if(resp == 'false') { 
     $('#collapseOne').show(); 
     var content = $('#s').val(); 
     $('#p').val(content); 
    } 
} 

И в заявлении else в php теперь вам просто нужно вернуть false.

if(file_exists(...)) { 
    //code 
} else { 
    echo 'false'; 
} 

Это, конечно, только если вы делаете вызов AJAX, если не вы должны доставить нам больше информации, как вы на самом деле делать это.

+0

Где упоминается AJAX? – j08691

+0

@ j08691 Ничего не говорится о том, как он это делает. Я думаю, что он делает это с AJAX, иначе это не имеет никакого смысла. Также есть этот комментарий '// эти строки не выполняются. Страница просто перезагружается после метода post'. –

+0

Может быть, просто простая обратная передача. – j08691

0

Вы выполняете полную перезагрузку страницы или запрос ajax javascript для получения скрипта php? В случае полной перезагрузки вы уже разбираете файл html с php перед доставкой, поэтому вам не нужно использовать javascript для управления, а просто php для отображения или скрытия элементов на странице html.

Если это запрос ajax (так что не включая ответ на запрос формы), вы можете использовать функцию обратного вызова для проверки успеха или сбоя и выполнить javascript после вашего запроса ajax (например, Charlotte Dunois). В этом случае вы просто получаете страницу с javascript, но этот javascript не влияет на уже загруженную страницу, а только на новую запрашиваемую страницу из запроса ajax. Вот почему вы не получаете никакого эффекта.

Для того, чтобы повлиять на javascript с помощью ответа ajax, вам необходимо добавить его в dom уже загруженной страницы.

В общем, я бы постарался отделить javascript от php, чтобы сохранить его в чистоте, поэтому не эхо-код javascript непосредственно из php для включения на страницу, а просто сообщите обозревателю об успехе или неудаче (ajax) или поместите тег на странице (например, a), который может быть найден javascript ($ ('# scriptSuccess'). length> 0), чтобы запустить ваш скрипт javascript.

Смежные вопросы