javascript - 在 SAS/HTML/javascript 中,如何在打开后立即关闭 STP _webout html 页面?

标签 javascript html sas sas-stored-process

从网页中的表单,我在新窗口中打开存储过程 (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/

相关文章:

javascript - Node - 无法在 VSCode 中编译 moment.js(模块和需求问题)

javascript - 何时在 Angularjs 中使用 $q.defer()

javascript - 使 chrome 将表格标题放在每页的顶部以打印长表格

sas - 跨数据集使用变量

function - 在 SAS proc fcmp 中如何返回 2 个数字

javascript - Ember JS 在新数据加载之前路由旧数据短暂可见

在 html 中用于图像验证码的 Javascript

html - 我如何设置 vim 7's html tidy options for "utf-8"编码?

database - SAS检测并纠正数据库中的错字错误

javascript - 使用IP地址在本地机器上查询Sesame