使用jquery ajax调用从服务器上的php脚本(mysql)检索图片


Retrieving a picture from php script (mysql) on server using jquery ajax call

我试图从我的服务器(其中有图片存储在mysql数据库)拉图片。然而,当我试图调用它时,我没有得到正确的图片?下面是我如何尝试设置php服务器响应…

if(mysql_query("insert into Personal_Photos (Email, Pics) values('$email', '$data')"))
            {
                $query="select Pics, MAX(ID) from Personal_Photos where Email='$email'";
                $result=mysql_query($query) or die("Error: ".mysql_error());
                $row=mysql_fetch_array($result);
                //$mime = 'image/yourtype';
                //$base64 = base64_encode($contents);
                //$uri = "data:$mime;base64,$base64";
                header("Content-type: image/jpg");
                print($row['Pics']);
            }

这是jquery的表单调用,试图得到这张图片…

$('#profilepicbutton').live('change', function(){
    $("#preview").html('');
    $("#preview").html('<img src="loader.gif" alt="Uploading...."/>');
        $("#registerpt3").ajaxForm({
                target: '#preview',
                success: function(data)
                {                                   
                    $("#preview").html('');
                    $("#preview").append("<img src="+data+"></img>");
                }
            }).submit();
 });

UPDATE: get WEIRD RESULT当我将php代码更改为

时,得到一个奇怪的结果
    if(mysql_query("insert into Personal_Photos (Email, Pics) values('$email', '$data')"))
            {
                $query="select Pics, MAX(ID) from Personal_Photos where Email='$email'";
                $result=mysql_query($query) or die("Error: ".mysql_error());
                $row=mysql_fetch_array($result);
                //$mime = 'image/yourtype';
                //$base64 = base64_encode($contents);
                //$uri = "data:$mime;base64,$base64";
                //header("Content-type: image/jpg");
                echo '<img src="data:image/jpeg;base64'.base64_encode($row['Pics']).'"/>';
            }

必须使用"GET"请求从url加载图像。(好吧,不总是-你可以使用数据url,但它可能是错误的,浏览器支持是一个问题)。因此,如果您可以使用"get"请求而不是"POST"请求来获取php页面,这是没有问题的。使用.serialize()创建您的查询字符串,并将url分配给图像的src:

$('#profilepicbutton').live('change', function() {
    $("#preview").html('');
    $("#preview").html('<img src="loader.gif" alt="Uploading...."/>');
    var form = $("#registerpt3");
    var page = form.attr("action");
    var qs = form.serialize();
    var url = page + "?" + qs;
    $("<img>").load(function() {
        $("#preview").empty().append(this);
    }).attr("src", url);
});