从网页中的表单,我在新窗口中打开存储过程 (STP)。
<form target="_blank" action="http://<UrlToMySTP>" method="get" enctype="multipart/form-data">
STP 做了一些事情,完成后我需要关闭它的窗口。 所以我试着用这样的javascript关闭它
data _null_;
file _webout;
put '<HTML>';
put ' <HEAD>';
put ' </HEAD>';
put ' <BODY onLoad="window.close()">';
put ' </BODY>';
put '</HTML>';
run;
但我收到一条错误消息:
Scripts may close only the windows that were opened by it
我找不到任何解决方案。 是否有可能规避问题以获得相同的结果?
最佳答案
您可以尝试使用 dataType: "jsonp"
进行 ajax 查询。 它可以克服 CORS。
STP 必须返回 json 响应,由 js 函数的名称包装,将在 ajax 响应后在浏览器中执行。
例子
json_test.sas
data _null_;
file _WEBOUT;
put "JSFunctionToAlertHTML({""Code"":0});";
run;
html_test.html
必须包含:
$.ajax({
url: "http://servername:port/SASStoredProcess/do?_program=path%2Fjson_test&callback=?",
dataType: "jsonp"
});
请注意附加参数 callback=
in url。
和
function JSFunctionToAlertHTML(json){
//Your code
}
如果您使用 EG 创建存储过程,您还必须从 STP 设置中排除存储过程宏并将结果功能设置为流。
关于javascript - 在 SAS/HTML/javascript 中,如何在打开后立即关闭 STP _webout html 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45862818/