2012-05-28 77 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