使用JQuery重新加载图像

时间:2014-05-08 17:58:42

标签: jquery asp.net-mvc asp.net-mvc-4

我想使用jquery更改图像的src但我的代码不起作用。 这是我的代码:

$(document).ready(function () {
        $("#imgCaptcha").click(function () {
            $.ajax({
                url: "/Account/CaptchaImage",
                success: function (result) {
                    var img_src = $(this).attr('src');
                    var timestamp = new Date().getTime();
                    $(this).attr('src', img_src + '?' + timestamp);
                }
            });
        });
    });

修改

我编辑了我的代码,但仍然没有工作:

$(document).ready(function () {
    $("#imgCaptcha").click(function () {
        $.ajax({
            url: "/Account/CaptchaImage",
            success: function (result) {
                var img_src = result;
                var timestamp = new Date().getTime();
                $("imgCaptcha").attr('src', img_src + '?' + timestamp);
            }
        });
    });

});

最终答案

$(document).ready(function () {
        $("#imgCaptcha").click(function () {
            $.ajax({
                url: "/Account/CaptchaImage",
                type: "post",
                success: function (result) {
                    $("#imgCaptcha").attr("src", "/Account/CaptchaImage/?r=" + Math.random());
                }
            });
        });
    });

4 个答案:

答案 0 :(得分:0)

你处于关闭状态,所以你所指的$(this)不是你想的那个,你应该把它保存在变量中以便以后访问它:

    $("#imgCaptcha").click(function () {
        var self = $(this);
        $.ajax({
            url: "/Account/CaptchaImage",
            success: function (result) {
                var img_src = self.attr('src');
                var timestamp = new Date().getTime();
                self.attr('src', img_src + '?' + timestamp);
            }
        });
    });

答案 1 :(得分:0)

$(document).ready(function () {
        $("#imgCaptcha").click(function () {
            $.ajax({
                url: "/Account/CaptchaImage",
                success: function (result) {
                    var img_src = $("#imgCaptcha").attr('src');
                    var timestamp = new Date().getTime();
                    $("#imgCaptcha").attr('src', img_src + '?' + timestamp);
                }
            });
        });
    });

答案 2 :(得分:0)

您需要参考的是图像ID。但是使用this将引用Ajax上下文。你不想要的。这就是为什么它给你错误的原因。请尝试使用以下代码

$(document).ready(function () {
        $("#imgCaptcha").click(function () {
            $.ajax({
                url: "/Account/CaptchaImage",
                success: function (result) {
                    var img_src = $('#imgCaptcha').attr('src');
                    var timestamp = new Date().getTime();
                    $('#imgCaptcha').attr('src', img_src + '?' + timestamp);
                }
            });
        });
    });

如果将代码更新为var img_src = result;,则无法使其正常运行。然后请了解您应该作为普通图像源获得响应。不是任何其他MIME类型数据的图像,如link_here.png(XML)

你应该得到的是

/link/to/file.png

一旦被捕获。您将加载图像并将Timestand附加到其上。

您应该担心的是,您的请求中存在错误。虽然您的代码足以加载图像。但是你应该总是尝试捕获错误事件。将其添加到您的代码中

error: function(XMLHttpRequest, textStatus, errorThrown) {
 alert("some error");
}

这会让你知道错误是什么。

其次,应该始终使用浏览器的控制台。要知道请求是什么,发送的位置以及响应是什么。您可以在浏览器中使用 F12 访问它。它甚至会显示服务器发送给您的响应。

答案 3 :(得分:0)



<script>

    $("#refresh").click(function () {
        var img = $('<img />', {
            id: 'CaptchaImg'

        });
        img.attr("style", "height:42px;")
        img.removeAttr("src")
        img.attr('src', '@Url.Action("ShowCaptchaImage", "Support")/' + new Date().getTime());
        $("#test").html('');
        img.appendTo('#test');

    });
</script>
&#13;
&#13;
&#13;

    $(&#34;#refresh&#34;)。click(function(){         var img = $(&#39;&#39;,{             id:&#39; CaptchaImg&#39;         });         img.attr(&#34; style&#34;,&#34; height:42px;&#34;)         img.removeAttr(&#34; SRC&#34)         img.attr(&#39; src&#39;,&#39; @ Url.Action(&#34; ShowCaptchaImage&#34;,&#34;支持&#34;)/&#39; +新日期() .getTime());         $(&#34;#测试&#34)的HTML(&#39;&#39)。         img.appendTo(&#39;#测试&#39);     });