通过jqueryajax请求更新图像

通过jqueryajax请求更新图像,ajax,imagick,Ajax,Imagick,我有一个PHP脚本,它使用imagick PHP扩展创建和镜像。我在页面加载时显示图像,如下所示: <img id="myImage" src="php/image-script.php" /> 这一切都可以在页面加载时正常工作。现在,我添加了一个jqueryajax请求,当从输入框中跳出标签时会触发该请求。然后,输入框的值通过如下查询字符串传递到image-script.php: $('#inputHeight').on('blur', function(){

我有一个PHP脚本,它使用imagick PHP扩展创建和镜像。我在页面加载时显示图像,如下所示:

<img id="myImage" src="php/image-script.php" />
这一切都可以在页面加载时正常工作。现在,我添加了一个jqueryajax请求,当从输入框中跳出标签时会触发该请求。然后,输入框的值通过如下查询字符串传递到image-script.php:

    $('#inputHeight').on('blur', function(){

    var $height = $('#inputHeight').val(); 

        $.ajax({ url: './php/preview-image.php?h=' + $height,
             type: 'post',
             success: function(output) {
                $('#preview').attr('src', output);             
             }

        });

    });

我的问题在于AJAX请求的success函数。目前,我正在用输出更新imgsrc属性(如上所述)。这只是将图像的原始字符串值写入属性,而不是更新。如何正确地更新图像?

我找到了一个解决方案,尽管我不确定它是否完全正确,因为我似乎要调用我的preview-image.php脚本两次?首先在URL中,然后在Success函数中。以下是更新的代码:

$('#inputHeight').on('blur', function(){

    var $width = 550;
    var $height = $('#inputHeight').val(); 

        $.ajax({ url: './php/preview-image.php?w=' + $width + '&h=' + $height,
             type: 'post',
             success: function(output) {
                $('#preview').attr('src', 'php/preview-image.php?w=' + $width + '&h=' + $height + '&' + Math.random());             
             }
    });

});

你确定calback真的成功了吗?您是否在那里设置了断点以查看
输出是什么?如果是-返回的输出是什么?我使用Chrome-deve工具检查了响应,它是一个由混杂字符和问号组成的长字符串(我假设是原始图像)。这也是插入到img src标记中的内容。请注意,创建的imagick对象永远不会保存下来,它只是在脚本中构建后进行响应,在页面加载时效果很好。您的问题不是关于刷新内容吗?我不这么认为,我的问题是“output”是原始图像字符串,我正在用这个更新src属性。这不起作用,所以我想知道如何用这个特定的输出更新图像。
$('#inputHeight').on('blur', function(){

    var $width = 550;
    var $height = $('#inputHeight').val(); 

        $.ajax({ url: './php/preview-image.php?w=' + $width + '&h=' + $height,
             type: 'post',
             success: function(output) {
                $('#preview').attr('src', 'php/preview-image.php?w=' + $width + '&h=' + $height + '&' + Math.random());             
             }
    });

});