2012-05-28 44 views
0

我有一个简单的形式,上传图像到服务器并返回包含图像地址(和/或aditional html代码)的PHP字符串。它使用JqueryForm插件完成。我想要的:由PHP文件返回的值(字符串)需要返回给jquery,所以我可以使用该图像url将其设置为某个元素的背景:返回php字符串到jquery

这里是php文件(用于uplaoding图像) :

$ path =“uploads /”;

$valid_formats = array("jpg", "png", "bmp"); 
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
    { 
     $name = $_FILES['photoimg']['name']; 
     $size = $_FILES['photoimg']['size']; 

     if(strlen($name)) 
      { 
       list($txt, $ext) = explode(".", $name); 
       if(in_array($ext,$valid_formats)) 
       { 
       if($size<(1024*1024)) 
        { 
         $actual_image_name = time().substr(str_replace(" ", "_", $txt), 5).".".$ext; 
         $tmp = $_FILES['photoimg']['tmp_name']; 
         if(move_uploaded_file($tmp, $path.$actual_image_name)) 
          { 
           echo $actual_image_name; //This is returned, i want thist to be somehow "converted" to jquery 
          } 
         else 
          echo "Sending failed!"; 
        } 
        else 
        echo "May filesize 1 Mb!";     
        } 
        else 
        echo "Unknown ffile format!"; 
      } 

     else 
      echo "Select image for sending"; 

     exit; 
    } 

而且,这里是jQuery代码用于发送图像:

$('#photoimg').live('change', function() { 
     $("#main").html(''); 
$("#main").html('<img src="/uploader/loader.gif" class="vk_upload_bar" alt="Uploading...."/>'); 
$("#imageform").ajaxForm({ 
     target: '#main' 
}).submit(); 
}); 

不知何故,而不是:

target: '#main' 

这使#main的里面的一些HTML,我需要这个:

$('#main').css('background-image', 'url(' + imageUrl + ')'); 

其中图像将被指派为ti #main by css。 (imageUrl是上面的php文件中的字符串:$ actual_image_name)

这是可能的,或者至少是否有一些类似的解决方案?

回答

2

需要在jQuery的形式来实现成功项目, 你的代码必须是这样的
(请务必在PHPü正确返回图像的完整路径,不需要使用JSON搞自己,回声或打印工作)

$('#photoimg').live('change', function() { 
    $("#main").html(''); 
    $("#main").html('<img src="/uploader/loader.gif" class="vk_upload_bar"  alt="Uploading...."/>'); 
    $("#imageform").ajaxForm({ 
    url : 'yourphpfile' , 
    success :function (data){ 
      $('#main').css('background-image', 'url(' + data + ')'); 

    } 

    }).submit(); 
    }); 

约jQuery的形式使用this link更多信息,

问候

+0

哇,tnx的人,效果很好,但只有一件事,现在“loader.gif”图像永远留在那里,上传完成后不会隐藏。这是我的Opera错误控制台所说的:[28.5.2012 17:52:55] JavaScript - [28.5.2012 17:52:55] JavaScript - http://domain.com/products-page/product-category/ test/ console.log [jquery.form] state = complete [28.5.2012 17:52:56] JavaScript - http://domain.com/products-page/product-category/test/ console.log [jquery.form] isXml = false' – SomeoneS

+1

我的朋友,用于删除加载程序。GIF你只是将其删除之前更改CSS 成功:功能(数据){ \t \t ** $( '#主')HTML( ''); ** $( '#主')的CSS。 ('background-image','url('+ data +')'); } – zhilevan

+0

Tnx再次,我已经删除它,我加$('。upload_bar')。fadeOut('medium'); :) – SomeoneS

2

写一个函数调用,执行文件加载时,将字符串传递到HTML中的JavaScript函数调用:

$(document).onload(function() { 
    functionCall('<?php echo $actual_image_name ?>'); 
} 
+0

哦,不,是PHP文件没有包含在everythig发生的文件中。 – SomeoneS

+0

这就是我真正的兄弟。考虑重新设计?使php函数返回值,然后在索引页面上将其保存为变量并将其回显到脚本中 – Rob

+0

@Rob,曾听说过AJAX? – Hidde

1

做一个AJAX调用,它发送的数据作为JSON字符串到PHP文件,并在回调函数中接收结果(也是JSON字符串)。在你的jQuery中使用返回数据。

+0

那么,只是返回字符串(从PHP文件)更容易,但我不知道是否有可能做jQuery表单插件我curently使用? – SomeoneS

+0

我的意思是Zhilevan用回调函数回答。 – Hidde