延迟javascript函数,直到文件上传到asp页面上

延迟javascript函数,直到文件上传到asp页面上,javascript,jquery,file-upload,asp-classic,vbscript,Javascript,Jquery,File Upload,Asp Classic,Vbscript,有人能告诉我如何延迟重置div背景图像,直到文件上传完成?但是,所有部件都可以单独工作 我必须通过弹出警报来延迟背景设置,然后在单击“确定”之前离开一段时间-我不能这样做,因为用户在按下之前不知道要离开多长时间。。。 感谢您的帮助,不过我应该说,我简单地看了一下jquery/ajax,但发现在需要刷新页面之前,它只能在IE中工作一次 Html <iframe id="MyFrame" name="MyFrame" style="display:none;"></iframe&g

有人能告诉我如何延迟重置div背景图像,直到文件上传完成?但是,所有部件都可以单独工作 我必须通过弹出警报来延迟背景设置,然后在单击“确定”之前离开一段时间-我不能这样做,因为用户在按下之前不知道要离开多长时间。。。 感谢您的帮助,不过我应该说,我简单地看了一下jquery/ajax,但发现在需要刷新页面之前,它只能在IE中工作一次

Html

<iframe id="MyFrame" name="MyFrame" style="display:none;"></iframe>
<form id="browseform" method="post" action="disp_photosave.asp" enctype="multipart/form-data"  target="MyFrame">
    <p>Please select your photo...</p>
    <img src="Images/button_browse.gif">
        <input type="hidden" name="tab" value="0">
        <input type="file"  id="upload" name="filesent" onchange="this.form.submit(); load_bk_photo()">
        <input type="hidden" name="tempid" value="<%=(TId)%>">
        <input type="hidden" name="side" value="<%=(strSide)%>">
        <input type="hidden" name="varid" value="<%=(Request.querystring("varid"))%>">
        <input type="hidden" name="prodid" value="<%=(Request.querystring("prodid"))%>">
</form>

请选择您的照片

javascript

function load_bk_photo(){
    var activeId = '<%=(activeTempStoreId)%>'
    var redStr_id = "side1"
    d = new Date();
    time_temp = d.getTime();
    photoUrl = "photos/merged_"+activeId+"_"+redStr_id+".png?"+d.getTime()
        alert ("timebbb = "+time_temp )
    $('#resizable-img').css('background-image','url("' + photoUrl + '")');
    $('#resizable-img').css('display','block');
}
function load\u bk\u photo(){
var activeId=''
var redStr_id=“side1”
d=新日期();
time_temp=d.getTime();
photoUrl=“photos/merged\u”+activeId+“\u”+redStr\u id+”.png?+d.getTime()
警报(“timebbb=“+time\u-temp”)
$('#可调整大小的img').css('background-image','url('+photoUrl+'));
$('#可调整大小的img').css('display','block');
}
显示photosave.asp上的vbscript

<%
Set Upload = Server.CreateObject("csASPUpload.Process")
Set Image = Server.CreateObject("csImageFile.Manage")

prodid = prodSet.Fields.Item("id").Value
redStr = "side1"
fieldPrefix = "front_"

If Upload.FileQty > 0 Then
    Image.ReadVariant Upload.FileData(0)
    Image.WriteFile Server.MapPath("this works ok"
      Image.ResizeFit scale_width, scale_height
      Image.WriteFile Server.MapPath("this works ok"
    storeHeight = Image.Height
    storeWidth = Image.Width

    Set MyConn=Server.CreateObject("ADODB.Connection")
        MyConn.Open "dsn=xxx;uid=xxx;password=xxx;"
        SQLString = "this works ok"
        MyConn.Execute(SQLString)
        MyConn.Close
    Set MyConn = Nothing
End if
%>
0那么
Image.ReadVariant Upload.FileData(0)
Image.WriteFile Server.MapPath(“这工作正常”
Image.ResizeFit比例\宽度、比例\高度
Image.WriteFile Server.MapPath(“这工作正常”
storeHeight=Image.Height
storeWidth=Image.Width
设置MyConn=Server.CreateObject(“ADODB.Connection”)
MyConn.打开“dsn=xxx;uid=xxx;password=xxx
SQLString=“这工作正常”
MyConn.Execute(SQLString)
麦肯,完毕
设置MyConn=Nothing
如果结束
%>
我还需要将storeHeight和storeWidth的值返回到主页,以便以后使用,以便任何人也能就此向我提供建议


提前感谢您的帮助。

我会使用全局回调方法:

JavaScript:

window.uploadComplete = function (returnData) {
    $('#resizable-img').css('background-image','url("' + returnData.photoUrl + '")');
    $('#resizable-img').css('display','block');  
    alert(returnData.storeHeight + "|" + returnData.storeWidth);
}
并在ASP中,将其返回到iFrame:

<script>
parent.uploadComplete({photoUrl: "urltophoto",storeHeight: "<value from asp var>", storeWidth: "<value from asp var>"});
</script>

uploadComplete({photoUrl:“urltophoto”,storeHeight:,storeWidth:});

我会使用全局回调方法:

JavaScript:

window.uploadComplete = function (returnData) {
    $('#resizable-img').css('background-image','url("' + returnData.photoUrl + '")');
    $('#resizable-img').css('display','block');  
    alert(returnData.storeHeight + "|" + returnData.storeWidth);
}
并在ASP中,将其返回到iFrame:

<script>
parent.uploadComplete({photoUrl: "urltophoto",storeHeight: "<value from asp var>", storeWidth: "<value from asp var>"});
</script>

uploadComplete({photoUrl:“urltophoto”,storeHeight:,storeWidth:});

您的
加载bk\u照片
函数有一些问题(缺少分号、创建全局变量),请尝试更改为:

function load_bk_photo(){

    //we can use the `var` keyword once and separate each variable declaration by a comma, then finish all the declarations with a semi-colon
    var activeId  = '<%=(activeTempStoreId)%>',
        redStr_id = "side1",
        d         = new Date(),
        time_temp = d.getTime(),
        photoUrl  = "photos/merged_" + activeId + "_" + redStr_id+".png?" + time_temp;

    alert ("timebbb = " + time_temp );

    //you can use one `.css()` function call to do both operations
    $('#resizable-img').css({
        'background-image' : 'url("' + photoUrl + '")',
        display            : 'block'
    });
}
请确保在更改
的源之前设置此绑定

请注意,
.on()
在jQuery 1.7中是新的,在本例中与
.bind()
相同

.on()

更新

我不知道asp classic,但如果您在asp代码中输出类似于
storeWidth | storeHeight
的内容,那么您可以在JavaScript中获得响应,并使用它执行您想要的操作:

$('#MyFrame').on('load', function () {
    //The iframe has loaded and you can do what you want, including get the contents of the iframe (server-response)
    var response = $(this).contents().find('body').text().split('|');
    alert(response[0] + 'x' + response[1] + 'px');
});

您的
load\u bk\u photo
函数有一些问题(缺少分号、创建全局变量),请尝试更改为:

function load_bk_photo(){

    //we can use the `var` keyword once and separate each variable declaration by a comma, then finish all the declarations with a semi-colon
    var activeId  = '<%=(activeTempStoreId)%>',
        redStr_id = "side1",
        d         = new Date(),
        time_temp = d.getTime(),
        photoUrl  = "photos/merged_" + activeId + "_" + redStr_id+".png?" + time_temp;

    alert ("timebbb = " + time_temp );

    //you can use one `.css()` function call to do both operations
    $('#resizable-img').css({
        'background-image' : 'url("' + photoUrl + '")',
        display            : 'block'
    });
}
请确保在更改
的源之前设置此绑定

请注意,
.on()
在jQuery 1.7中是新的,在本例中与
.bind()
相同

.on()

更新

我不知道asp classic,但如果您在asp代码中输出类似于
storeWidth | storeHeight
的内容,那么您可以在JavaScript中获得响应,并使用它执行您想要的操作:

$('#MyFrame').on('load', function () {
    //The iframe has loaded and you can do what you want, including get the contents of the iframe (server-response)
    var response = $(this).contents().find('body').text().split('|');
    alert(response[0] + 'x' + response[1] + 'px');
});

谢谢Jasper。我的javascript代码非常新,所以谢谢你的更正。你能告诉我你所说的“在…之前绑定”是什么意思吗?这可能是个愚蠢的问题,但我不确定你的意思。谢谢。我的意思是,在提交表单之前,你需要将事件处理程序绑定到iframe。如果你提交表单,然后绑定到e
load
事件;
load
事件可能会在您实际设置事件的事件处理程序之前触发。简而言之,将
$('#MyFrame')。置于('load'…
文档中的代码。就绪处理程序(
$(函数(){$('#MyFrame')。置于('load'…})
)。这将确保在触发事件之前和DOM准备好进行操作之后进行绑定。嗨,Jasper。恐怕我的工作进展不太顺利。我已经按照你的建议输入了代码,但没有乐趣。你能澄清一下,这段代码是否必须具有“load_bk_photo()“从中调用?我一直在努力保存我们的网站,因为网络开发公司破产了!我的学习曲线很陡…谢谢Jasper。我的javascript代码很新,所以谢谢你的更正。你能告诉我你所说的“之前绑定…”是什么意思吗?这可能是个愚蠢的问题,但我不确定你的意思。谢谢。我是什么意思?”这意味着您需要在将表单提交到iframe之前将事件处理程序绑定到iframe。如果您提交表单,然后绑定到
load
事件;
load
事件可能会在您实际设置事件的事件处理程序之前触发。简而言之,请将
$('#MyFrame')置于启用状态('load'…
文档中的代码.ready处理程序(
$(函数(){$('MyFrame'))。on('load'…})
)。这将确保在触发事件之前和DOM准备好进行操作之后进行绑定。嗨,Jasper。恐怕我的工作进展不太顺利。我已经按照你的建议输入了代码,但没有乐趣。你能澄清一下,这段代码是否必须具有“load_bk_photo()“从它那里打电话?我一直在努力保存我们的网站,因为网络开发公司破产了!我的学习曲线很陡……嗨,凯文。谢谢你的回复。我不熟悉全球回调-我会读一读。希望它能得到我需要的数据。我会在早上试试。谢谢。凯文,我试过了。”但一定是做错了什么。上传密码确实触发了(没有出现警报)。在呼叫中是否有它需要进入的位置