使用javascript

时间:2015-10-13 06:39:18

标签: javascript jquery html

在网站中,我使用javascript将文件从本地计算机上传到网络服务器。

我使用javascript将文件上传到服务器并更新表单文本字段。 在同一文档上,在表单外部还有一个图像,我想用刚刚上传的图像文件更新图像。

这是我用来实现这两件事的javascript:

  1. 更改表单文本字段:

    opener.document.form1.logo_material.value="?php echo $prefijo.$str;?>";
    

    (由于编辑限制,<之前的?php被省略 这部分工作正常。

  2. 更改上传图片的图片:

    opener.document.getElementById("materiallogo").src="..url hidden here../?php echo $prefijo.$str;?>";
    
  3. (由于编辑限制,<之前的?php被忽略)

    这部分#2不起作用。欢迎任何帮助。感谢

    修改

    用于调用JS函数的表单按钮:

    <input type="button" name="button" id="button" value="Upload logo" onclick="javascript:subirimagen();" />
    

    主文档中的JavaScript函数:

    <script> 
    
    function subirimagen()
    
    {
    
        self.name = 'opener';
    
        remote = open('subirimagenmaterial.php','remote','width=300,height=150,location=no,scrollbars=yes, menubar=no, toolbars=no,resizable=yes,fullscreen=yes, status=yes');
    
        remote.focus();
        }
    
    
    </script>
    

    管理所有文件上传和文本字段的PHP更改,还应管理图像更新:

    subirimagenmaterial.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Upload Material logo</title>
    
    </head>
    
    
    
    <body>
    
    
    
    <?php 
    
    
     if ((isset($_POST["enviado"])) && ($_POST["enviado"]=="form1")){
    $length = 10;
    
    $randomString = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length);
    
    $prefijo =  $randomString;
    
    
        $nombre_archivo = $_FILES['userfile']['name'];
    
        $file_upload = "true";
        if ($_FILES['userfile']['size']>200000){
    $file_upload="false";
    }
    
        if ($file_upload == 'true'){
    
       $str=preg_replace('/\s+/', '', $nombre_archivo);
       $str =preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($str, ENT_QUOTES, 'UTF-8'));
        move_uploaded_file($_FILES['userfile']['tmp_name'],"materials/".$prefijo.$str);
        ?>
          <script>
    
        opener.document.form1.logo_material.value="<?php echo $prefijo.$str;?>";
    
        opener.document.getElementById("materiallogo").src="h..URL hidden here/<?php echo $prefijo.$str;?>";
    
        self.close();
    
        </script>
    <?php
    
        }
        else 
        {
            echo "El archivo seleccionado es superior a 200KB, inténtalo de nuevo con otro archivo de tamaño inferior a 200KB.<BR><BR><BR>";?>
    <input type='submit' name='submit' value='Reintentar' onClick="window.location.reload()" />
    
    
    <?php }
        ?>
    
    
    
    
    
        <?php 
    
    }
    
    else {?>
    
    <form id="form1" name="form1" method="post" action="subirimagenmaterial.php" data-ajax="false" enctype="multipart/form-data">
    
      <p>
    
        <input name="userfile" type="file" />
    
      </p>
    
      <p>
    
        <input type="submit" name="button" id="button" value="Subir imagen del evento" />
    
        <input type="hidden" name="enviado" value="form1" />
    
      </p>
    
    
    </form>
    
    <?php }?>
    
    </body>
    
    </html>
    

3 个答案:

答案 0 :(得分:1)

我认为你应该使用Node.replaceChild

var curImg = opener.document.getElementById("materiallogo");
var newImg = document.createElement("img");

// give it an id attribute 
newImg.setAttribute("id", curImg.id);

var parentDiv = curImg.parentNode;

// replace existing node curImg with the new img element newImg
parentDiv.replaceChild(curImg, newImg);

newImg.src = '' // <-------------- HERE PUT NEW PATH FOR IMG

答案 1 :(得分:0)

尝试将子窗口中的代码更改为:

window.opener.document.getElementById('materiallogo').src="something"

答案 2 :(得分:0)

试试这个

result("foo:8:bar") = "val2"
val result= Map("foo:7:bar" -> "val1",
                "foo:8:bar" -> "val2",
                "foo:9:bar" -> "val1")