2012-05-28 2 views
0

У меня есть простая форма, которая загружает изображение на сервер и возвращает строку php, содержащую адрес изображения (и/или adental html code). Это делается с помощью плагина JqueryForm. Что мне нужно: значение (строка), возвращаемое файлом PHP, должно быть возвращено в jquery, поэтому я могу использовать этот URL-адрес изображения, чтобы установить его как bckground для какого-либо элемента:Возвращая 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' 

, что ставит некоторые HTML внутри #main, мне нужно, чтобы сделать это :

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

где изображение будет присвоено ti #main by css. (imageUrl - это строка из файла php выше: $ actual_image_name)

Возможно ли это, или, по крайней мере, существует какое-то подобное решение?

ответ

2

вам нужно реализовать успеха элемент в виде Jquery, ваш код должен быть, как это
(убедитесь, что в PHP U вернуть полный путь к изображению, не нужно заниматься себя с 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

Wow, tnx man, отлично работает, но еще одна вещь, теперь изображение «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

Написать вызов функции, которая выполняется при загрузке документа и передать строку в вызове функции в JavaScript HTML, в:

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

Ну, нет, этот файл РНР не входит в файл, где происходит каждый. – SomeoneS

+0

Вот и все, что я действительно получил. Возможно, подумайте над редизайном? Сделайте функцию php возвратом значения, а затем на индексной странице сохраните ее как переменную и повторите ее в скрипте – Rob

+0

@Rob, когда-либо слышал о AJAX? – Hidde

1

сделать вызов AJAX, который отправляет данные в виде строки JSON в PHP, и получает результаты (также строку JSON) в функции обратного вызова. Используйте возвращаемые данные в вашем jQuery.

+0

Ну, проще просто вернуть строку (из php-файла), но я не знаю, возможно ли это сделать с плагином формы jquery, который я использую? – SomeoneS

+0

Я имел в виду то, что ответил Жилеван, с функцией обратного вызова. – Hidde

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

  • Нет связанных вопросов^_^