日期:2014-05-17  浏览次数:20459 次

ashx 和Jquery Ajax问题
jquery代码如下:

JScript code

   $("a[obj=materialUpload]").live("click", function () {
        var ss =window.showModalDialog("MaterialUpload.aspx",window, 'dialogWidth:500px;dialogHeight:400px');
 
        if (ss == "0") {
            $.ajax({
                url: "InputHelper.ashx",
                type: "get",
                data: "count=1",
                success: function (msg) {
                    alert(msg);
                    browse.show();
                    browse.text("浏览(" + msg + ")");
                    browse.live("click", function () {
                        common.openWindow("View/Process/ShowMaterialList.aspx?materialId=" + browse.attr("materialId") + "&processId=" + browse.attr("processGuid") + "&itemId=" + $("#hfItemGuid").val() + "&customerId=" + $("hfCustomerId").val(), 850, 700);
                    });
                }
            });
        }
    })



出现的问题比较诡异:
在一个repeater里面有<a>标签,第一次点击时,数据在ashx里面走了一遍,返回;当第二次点击该<a>标签时,ashx文件里面打的断点并没有显示数据有传过来,但jquery的ajax的success属性事件却触发了。奇怪的有两点,1:第二次点击<a>标签时,ashx文件打断点调试,没有走进去,而第一次能进入到ashx文件里;2:第二次点击<a>标签,success绑定的回调函数执行了,但alert(msg)里的msg还是上次(第一次)的msg;

------解决方案--------------------
url 上加上随机数就好了
------解决方案--------------------
 
var url=MaterialUpload.aspx?r=' + Math.random();
var ss =window.showModalDialog(url,window, 'dialogWidth:500px;dialogHeight:400px');

------解决方案--------------------
探讨
引用:
这是什么原因造成的

啊,浏览器缓存搞得鬼

------解决方案--------------------
浏览器缓存了请一次请求
所以可以加上随机 让每次请求url都不一样的
jquery的话 可以
type: "get",
cache:false, 告诉浏览器不要缓存