【问题标题】:Returning php string to jquery将php字符串返回到jquery
【发布时间】:2012-05-28 15:11:26
【问题描述】:

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

这是 php 文件(用于上传图片):

$path = "上传/";

$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 + ')');

其中图像将由 css 分配给 #main。 (imageUrl 是上面 php 文件中的字符串:$actual_image_name)

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

【问题讨论】:

    标签: jquery jquery-plugins jquery-forms-plugin jqueryform


    【解决方案1】:

    你需要以jquery形式实现success项, 你的代码必须是这样的
    (确保在 php 中你返回图像的完整路径,不需要使用 json,使用 echo 或 print 正常工作)

    $('#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

    问候

    【讨论】:

    • 哇,tnx man,效果很好,但还有一件事,现在“loader.gif”图像永远保留在那里,上传完成后它不会隐藏。这是我的 Opera 错误控制台所说的:` [28.5.2012 17:52:55] JavaScript -[28.5.2012 17:52:55] JavaScript -domain.com/products-page/product-category/testconsole.log [jquery.form] state = complete [28.5 .2012 17:52:56] JavaScript - domain.com/products-page/product-category/test console.log [jquery.form] isXml=false `
    • 我的朋友,对于删除 loader.gif,您只需在更改 css 成功之前将其删除:function (data){ $('#main').html(''); $('#main').css('background-image', 'url(' + data + ')'); }
    • Tnx 再次,我已经删除了它,我添加了 $('.upload_bar').fadeOut('medium'); :)
    【解决方案2】:

    编写一个在文档加载时执行的函数调用,并将字符串传递给 HTML 的 javascript 中的函数调用:

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

    【讨论】:

    • 好吧,不,该 php 文件不包含在发生所有事情的文件中。
    • 这就是我真正得到的兄弟。也许考虑重新设计?让php函数返回值,然后在index页面上保存为变量回显到脚本中
    【解决方案3】:

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

    【讨论】:

    • 嗯,只返回字符串(从 php 文件)更容易,但我不知道是否可以使用我目前使用的 jquery 表单插件?
    • 我的意思是智乐文回答的,回调函数。
    猜你喜欢
    • 2014-04-01
    • 2012-03-02
    • 1970-01-01
    • 2013-01-30
    • 2014-08-19
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多