为什么JSP中的警报语句在ajax调用期间不起作用?

时间:2015-05-04 07:31:52

标签: javascript jsp

我正在对jsp进行ajax调用,以呈现我作为pdf发送的html内容。在jsp中,我有一些未被调用的警报语句。是因为我正在制作ajax请求吗? 我不想在js的else块中使用警报。

var objHTTP = new XMLHttpRequest();
objHTTP.open("post", "myJspToRenderAsPdf.jsp", true);
objHTTP.setRequestHeader("Content-type", "text/html");
objHTTP.responseType = 'blob';
objHTTP.onload = function(event) {
if (objHTTP.status == 200) {

/*
Code to download pdf
*/

} else {
alert('PDF was not generated');

}
};
objHTTP.send(strData);

jsp代码:

<%
if(something.equals("true")){

%>
<script language = "javascript">
alert("alert not working");
</script>

<%
 }
%>

1 个答案:

答案 0 :(得分:0)

从异步调用返回的脚本不会被javascript引擎评估。你最好的办法是明确地描述你的返回脚本。通过调用javascript eval方法。

像这样的东西

objHTTP.onload = function(event) {
if (objHTTP.status == 200) {
document.getElementById("SomeDIv").innerHTML = xhr.responseText;
eval(document.getElementById('toExecute').innerHTML); // Relavent for You
/*
Code to download pdf   
*/

} else {
alert('PDF was not generated');

}
};

在JSP中

%>
<script id="toExecute" language = "javascript">
alert("alert not working");
</script>
<%

以上行eval(...)将评估您的JavaScript,您可以收到提醒。