使用jquery ajax通过GET更新动态创建的图像

时间:2013-05-11 14:43:33

标签: php html ajax jquery

我目前的工作情况如下:

<!-- collect user info -->
<form method="GET">
    <input name="param1" type="text" />
    <input name="param2" type="text" />
    <input type="submit" />
</form>

<!-- display image based on user info -->
<img src="color.php?param1=<?php echo $_GET['param1']; ?>param2=<?php echo $_GET['param2']; ?>" alt="" />

这很完美。现在我想只通过ajax更新图像,而HTML的其余部分保持不变。我试过这个:

<form method="GET" id="formId">
    <input name="param1" type="text" />
    <input name="param2" type="text" />
    <input type="submit" />
</form>

<div id="result"></div>

<script type="text/javascript">
    var frm = $('#formId');
    frm.submit(function(){
        $.ajax({
            type: 'GET',
            success: function () {
                $('#result').html('<img src="color.php?' + frm.serialize() + '" />');
            }
        });
        return false;
    });
</script>

事实上,这种解决方案或多或少都有效。但是,我在这里有一些问题:

  1. 这是好的jquery / ajax代码还是傻(是的,我是jquery的新手)?
  2. 仅当其中一个字段发生更改时,字段“result”才会更新。每当提交按钮被点击时,我可以更新吗?
  3. 我想在color.php计算图片时显示旋转load.gif。我试过这种方式,没有成功:
  4. var ajax_load = "<img class='loading' src='img/load.gif' alt='loading...' />";
    $('#result').html(ajax_load).html('<img src="color.php?' + frm.serialize() + '" />');
    

    谢谢!

1 个答案:

答案 0 :(得分:3)

向jQuery ajax调用添加参数cache:false,强制刷新图像。要使用加载器,只需使用attributo src即可。复制/粘贴代码:

<form method="GET" id="formId">
    <input name="param1" type="text" />
    <input name="param2" type="text" />
    <input type="submit" />
</form>

<div id="result">
     <img id="preview" src="img/load.gif" />
</div>

<script type="text/javascript">
    var frm = $('#formId');
    frm.submit(function(){
        $('#preview').attr('src', 'img/load.gif' );
        $('#preview').attr('src', 'color.php?' + frm.serialize() + '&_' + new Date().getTime() );
        return false;
    });
</script>