2011-03-16 62 views
0


我使用VS2010,MVC3。
我有以下jQuery脚本,点击一个按钮后,在控制器流中有一个ActionResult页面的pdf版本到新窗口。
但是,这里发生了什么:
当页面第一次呈现时,我得到警报:“hereb1”和actionUrl的正确url值。
第一次点击按钮时,我得到警告“在hereb2”和“undefined”作为url的值,并打开一个新窗口,出现未定义资源错误。
第三次点击按钮时,我得到“hereb2”中的警报和正确的url值(与actionUrl的值相同),并打开一个新窗口并显示预期结果。没有错误。
为什么第一次点击无法访问actionUrl的正确值?点击一个按钮没有得到绑定正确的第一次点击,但正确绑定第二次点击

<script type="text/javascript"> 
$(document).ready(function() { 
    alert("in hereb1"); 
    var actionUrl = '@MvcHtmlString.Create(Html.BuildUrlFromExpressionForAreas<MyController>(c => c.GeneratePdf(Request.Url.ToString())))'; 
    alert(actionUrl); 
    $("#btnPdf").click(function() { 
     var url = $(this).attr("href"); 
     $(this).attr("href", actionUrl); 
     alert("in hereb2"); 
     alert(url); 
     var win = window.open(url, "PdfVersion"); 
     win.focus(); 
     return false; 
    }); 
    }); 
</script> 

感谢

回答

0

如果你想在一个新的标签/窗口中打开actionUrl下面的代码可以帮助

$("#btnPdf").click(function() { 
    //var url = $(this).attr("href"); 
    $(this).attr("href", actionUrl); 
    alert("in hereb2"); 
    alert(actionUrl); 
    var win = window.open(actionUrl, "PdfVersion"); 
    win.focus(); 
    return false; 
}); 

你的代码确实是获取到的网址btnPdf并在新窗口/选项卡中打开url,并将btnPdfhref属性设置为actionUrl,如果您尝试这样做,请确保已使用提供服务的页面的属性href alredy集。

+0

这并没有工作,但我还是谢谢你。然而,这篇文章的第一个答案奏效了。 – FZF 2011-03-17 16:50:22

0

开关

var url = $(this).attr("href"); 
$(this).attr("href", actionUrl); 

$(this).attr("href", actionUrl); 
var url = $(this).attr("href"); 
+0

非常感谢,解决了这个问题。 – FZF 2011-03-17 16:49:42

相关问题