2013-12-04 1 views
0

Вот часть моей функции Javascript:

var x=document.getElementById('DigitalFiles').rows[R].cells; 
    x[0].innerHTML= $_FILES['files']['name'][1] <<<< this $_FILES is not working ! 

Что синтаксис будет работать, пожалуйста.

+3

Синтаксис не будет работать. JavaScript полностью выполняется на клиенте и не знает «$ _FILES». Что вы пытаетесь сделать с этим? –

+1

Ваш js встроен в файл php? – bagonyi

+0

Если вы пытаетесь получить имя файла из ввода формы, это было бы легче сделать с атрибутом 'value =' ввода. –

ответ

0

Переменная $ _FILES специфична для PHP, а не JS. Если вы хотите использовать JS, у вас появятся некоторые ограничения. Вы можете проверить обработку файлов HTML5 по этой ссылке http://www.html5rocks.com/en/features/file_access

1

Кажется, вы запутываете javascript с PHP или наоборот.

Чтобы установить x[0].innerHTML до требуемого значения, вы могли бы использовать это:

x[0].innerHTML=<?php echo $_FILES['files']['name'][1]; ?>; 

Или, если вы уже генерации яваскрипта кода непосредственно в PHP:

<?php 
    echo 'x[0].innerHTML="'.addslashes($_FILES['files']['name'][1]).'"'; 
?> 

Вообще

Вы не можете перебирать массив PHP в javascript - если только вы не сделаете его содержимое доступным для javascript:

<script type="text/javascript"> 
    var _arrayFromPhp=[<?php 
     implode(',', $_arrayInPhp); 
    ?>]; 
</script> 

Это будет работать, как правило, так что вы можете использовать _arrayFromPhp в вашей яваскрипта среде. Этот довольно абстрактный пример также предполагает, что $_arrayInPhp представляет собой массив только с одним уровнем.

Однако в частном случае $ _FILES это не имеет особого смысла, поскольку PHP заполняет массив $ _FILES файлами, которые загружаются клиентом. Я не могу придумать какой-либо целенаправленный способ обработки содержимого $ _FILES в javascript.

Если вы все равно хотите использовать его, вы можете это сделать так:

<script type="text/javascript"> 
    var _arrayFromPhp=<?php 
     json_encode($_FILES); 
    ?>; 
</script> 

После чего _arrayFromPhp будет содержать представление $_FILES в JavaScript.

Примечание

Если вы хотите как-то работать с ранее загруженными файлами в яваскрипта среде, вы должны сначала обработать загрузку в самом PHP (где $_FILES приходит играть), а затем применить что-то вроде вышеупомянутого решения чтобы получить информацию из PHP в среду javascript.

Также обратите внимание, что $_FILES будет содержать только что-либо, если скрипт вызывается непосредственно через процесс загрузки. Если вы загружаете файлы, а затем перезагружаете страницу (например), то $_FILES будет пустым.

Подсказка

В случае, если вы используете обычную форму загрузки, пожалуйста, убедитесь, что ваша форма установлена ​​на правильный тип кодирования (с помощью атрибута ENCTYPE):

<form method="post" enctype="multipart/form-data"> 
</form> 
+0

Это отличный ответ[email protected] user3063795 Проверьте приведенное ниже объяснение относительно различий между PHP и JS в этой среде. –

0

Позвольте мне просто развернуть разницу между PHP и Javascript (в этом контексте).

Это упрощенный поток;

Клиент (ваш или чужой браузер) запрашивает сайт на myURL.com. Это запрашивает ваш сервер (например, LAMP) и Apache направляет этот запрос в нужное место, а на вашем сервере выполняется PHP, и это создает HTML. Но на самом деле этот «HTML» - просто простая строка. PHP не знает, что такое HTML, или что-то в этом роде, и когда вы эхом или печатаете и т. Д. HTML из PHP, PHP просто думает об этом как о строке.

PHP обладает способностью взаимодействовать с database (M в LAMP, для MySQL - в этом воображаемом случае), а также некоторые серверные переменные ($_SERVER и $_POST/GET). Как только все PHP выполняет и создает ваш HTML, он отправляет этот HTML-код в виде простой строки в клиентский браузер.

Браузер получает эту строку, а затем начинает интерпретировать ее как HTML. Он читает HTML и начинает загружать ваши активы, такие как файлы javascript, файлы CSS, изображения и т. Д. И т. Д. И начинает все это вместе. Таким образом, ваш файл javascript читается и выполняется, и CSS начинает стилизовать HTML. Javascript может продолжать работать на клиенте или запускаться для запуска определенных функций с помощью определенных событий (щелчок, выбор времени, прокрутка и т. Д.).

Как вы можете видеть, у клиента нет доступа к запущенному PHP. Все PHP запускается на сервере и возвращает строку. Все, что делает клиент, - это просто выполнить Javascript.

Теперь, когда дело обстоит немного лучше, вы можете начать использовать AJAX. AJAX - это комбинация технологий (асинхронный JavaScript и XML), который используется для запросов на серверы без перезагрузки или перенаправления клиента на новую страницу. Это означает, что вы можете иметь своего клиента на myURL.com и сделать запрос AJAX на myURL.com/myAJAXHandler.php. Клиент остается на myURL.com, однако сервер в основном видит, что клиент пытается получить доступ к странице myURL.com/myAJAXHandler.php в браузере. Сервер делает свою обычную вещь, запускает все, что находится на этом адресе PHP, и снова возвращает простую строку клиенту. Клиент, использующий Javascript, получает эту строку и может делать с ней что угодно, что обычно обновляет текущую страницу (по-прежнему myURL.com) или любое количество вещей.

Это упрощенное объяснение, и я многое изложил и обобщил много, но я просто пытаюсь дать вам общее представление о том, что происходит.

Надеюсь, это помогло.

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