Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在React中自动执行响应后内容(即脚本标记)?_Reactjs_Integration - Fatal编程技术网

Reactjs 如何在React中自动执行响应后内容(即脚本标记)?

Reactjs 如何在React中自动执行响应后内容(即脚本标记)?,reactjs,integration,Reactjs,Integration,我正在做一个react项目,它将取代我们遗留系统的登录页面。但是,由于集成和业务规则的原因,此react应用程序仍需要对此旧版ASP页面发出post请求 我的挑战是将此ASP的返回与react集成。如果出现错误,遗留响应是字符串,如果成功,则是脚本html标记 更改旧版响应不是一个选项 错误响应示例: 密码/用户名无效 成功例子: <script type='text/javascript'>top.location = 'http://www.contoso.com/myIndex

我正在做一个react项目,它将取代我们遗留系统的登录页面。但是,由于集成和业务规则的原因,此react应用程序仍需要对此旧版ASP页面发出post请求

我的挑战是将此ASP的返回与react集成。如果出现错误,遗留响应是字符串,如果成功,则是脚本html标记

更改旧版响应不是一个选项

错误响应示例:
密码/用户名无效

成功例子:

<script type='text/javascript'>top.location = 'http://www.contoso.com/myIndexPage.asp?token={FFF6F5F0F-F000-0F00-0000-F000F00F0000}'</script>
top.location=http://www.contoso.com/myIndexPage.asp?token={FFF6F5F0F-F000-0F00-0000-F000F00F0000}
我的问题是如何正确处理请求,如果成功,是否自动执行此脚本标记?我尝试过使用危险的LysetinerHTML,但它没有执行脚本。不过,脚本标记已正确插入HTML中

我就是这样使用它的:

如何在有效登录时执行成功脚本标记,或者在无效登录时仅显示错误消息

这是一种解决方案

首先解析html。我使用了这个技巧:


只有在成功时,响应才是脚本。错误响应将是一个字符串,如:
“无效用户”
。如果我eval()这个错误消息,我将得到一个异常。@tiagorrenck您可以在try/catch中处理它
const string = "<script type='text/javascript'>top.location = 'http://www.contoso.com/myIndexPage.asp?token={FFF6F5F0F-F000-0F00-0000-F000F00F0000}'</script>"

const el = document.createElement('div');
el.innerHTML = string;
const scriptString = el.firstChild.innerText;
eval(scriptString);