2012-04-18 4 views
0

Я хочу добавить имя файла, загруженного в (.list). Имя файла должно быть именем, которое оно вызывается на сервере при его загрузке. Например, у меня могло быть 2 файла, но один из них известен как mountain.png и другие горы2.png.Как передать php-код в функции javascript?

Но проблема в том, что я могу передать $ _FILES ["fileImage"] ["name"] в качестве аргумента моей js-функции, а затем добавить его, потому что функция javascript и php-скрипт находятся на отдельных страницах (хотя php-скрипт выполняет вызов функции javascript)?

ОБНОВЛЕНИЕ

Ниже приведен код Javascript:

Ниже приведен код формы (QandATable.php)

<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='startImageUpload(this);' class='imageuploadform' > 
     <p>Image File: <input name='fileImage' type='file' class='fileImage' /> 
     <input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /> 
     </p> 
     <ul class='list'></ul> 
     </form> 

Ниже приводится Java-функция (QandATable.php)

 function stopImageUpload(success){ 

    var nameimagefile = <?php echo $nameimagefile?>; 
     var result = ''; 
     if (success == 1){ 
     result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>'; 
     $('.listImage').append(nameimagefile + '<br/>'); 
     } 
     else { 
     result = '<span class="emsg">There was an error during file upload!</span><br/><br/>'; 
     } 

    return true; 

    } 

Ниже приведено значение t он PHP скрипт (imageupload.php):

$result = 0; 
    $nameimagefile = ''; 

     if(file_exists("ImageFiles/".$_FILES['fileImage']['name'])) { 
      $parts = explode(".",$_FILES['fileImage']['name']); 
      $ext = array_pop($parts); 
      $base = implode(".",$parts); 
      $n = 2; 

      while(file_exists("ImageFiles/".$base."_".$n.".".$ext)) $n++; 
      $_FILES['fileImage']['name'] = $base."_".$n.".".$ext; 

      move_uploaded_file($_FILES["fileImage"]["tmp_name"], 
      "ImageFiles/" . $_FILES["fileImage"]["name"]); 
      $result = 1; 
$nameimagefile = $_FILES["fileImage"]["name"]; 

     } 
      else 
       { 
       move_uploaded_file($_FILES["fileImage"]["tmp_name"], 
       "ImageFiles/" . $_FILES["fileImage"]["name"]); 
       $result = 1; 
$nameimagefile = $_FILES["fileImage"]["name"]; 

       } 


     ?> 

     <script language="javascript" type="text/javascript">window.top.window.stopImageUpload(<?php echo $result;?>);</script> 
+0

вы должны смотреть в AJAX для этого – hjpotter92

ответ

0

Вы можете просто взять значение $ _file файла в переменную PHP, чем эхо его с помощью

var yourjasvariable=<?php echo $yourvariable?>; 

и использовать JS переменной в методе добавления. :-)

+0

Только один быстрый вопрос: $ yourvariable = $ _FILES ["fileImage"] ["name"]; идет на странице сценария php (imageupload.php) или идет на той же странице, что и функция javascript? – user1324106

+0

Ну. Если вы используете 2 разных страницы, вы должны просмотреть Ajax/JSON для обмена данными между Javascript и PHP – SativaNL

+0

передать имя файла в качестве другого аргумента, вы можете использовать массив, если имеется более одного файла. $ yourvariable = $ _FILES ["fileImage"] ["name"]; это будет существовать только в вашем файле imageupload.php. Спасибо –

0

Вы можете выбрать AJAX, чтобы делать то, что хотите. Напишите свои данные в JSON. JSON можно читать с PHP и JavaScript - читать JSON, чтобы получить данные в PHP - читать AJAX результат (JSON), чтобы получить данные из PHP

Я хотел бы сделать что-то вроде этого (непроверенной пример)

AJAX часть расслоение плотной

<form method='post' enctype='multipart/form-data' onsubmit='startAjaxImageUpload(this);' > 
     ... 
</form> 

/* 
* ajax functions 
*/ 
function startAjaxImageUpload(event){ 

    /* Collect your formdatas as json with jquery this datas will be sent to php*/ 
    var formDatas = { 
      'value1'  : $('input[test1=eid]').val(), 
      'value2'  : $('input[id=test2_id]').val(), 
      ...... 
     'value3' : $('input[id=test3_id]').val() 
     }; 

    $.ajax({ 
     cache: false, 
     url: "imageupload", 
     data: formDatas, 
     success: function(data) { 
      // data is the json Result from php => imageupload.php do what u want with them in js 
      // use the next line if u wanna see which json datas comes back from php if the ajax call wass successfull 
      // console.log("data is %o, data); 
      // .... 

     } 
     error:function(data){ 
      // error function 
      // data is the json Result from php => imageupload.php do what u want with them in js 
      // use the next line if u wanna see which json datas comes back from php if the ajax call wass successfull 
      // console.log("data is %o, data); 
      alert(damn, something went wrong); 
     } 
    }) 
} 

PHP часть, imageupload.php

$result = 0; 
    $nameimagefile = ''; 
    ..... 
    // if done ure work on server side and no error was found, pass the result back to starAjaxImageUpload success function 
    return $nameimagefile = $_FILES["fileImage"]["name"]; 
    }else 
    // abbort ajax, ajax error function will used 
    return false 
      } 
Смежные вопросы