我希望有人可以协助解决我目前遇到的问题。我在客户端网站上实现了名为 IFrame1 的IFrame
。在客户端网站上,他们在QueryString
中拥有该用户的某些信息,例如clientwebsite.com/login.aspx?UserID=xxxx&UserName=xxxx
。
使用MVC
什么是检索整个查询字符串的最佳方式,而我在网站上只有IFrame
?
我尝试使用JavaScript
检索window.location
,但这只会显示部署IFrame
的网址(MyServer.com),而不会显示已实施的网址(clientwebsite.com) )。我也尝试过使用C#HttpRequest.QueryString。这也只显示我部署解决方案的URL,而不是客户端网站URL。
如果有人有任何建议,我们将不胜感激。
修改
我尽可能多地尝试使用window.parent.location
。我写了一个小网页,我只需将代码拉出来并显示如下:
<script type="text/javascript">
document.write("window.location.href : " + window.location.href + "<br />");
document.write("window.parent.location : " + window.parent.location + "<br />");
document.write("document.referrer : " + document.referrer + "<br />");
</script>
当我运行此页面时,我得到如下结果:
window.location.href http://mywebsite.com/test
window.parent.location http://mywebsite.com/test
document.referrer
哪个好,但是当我通过客户端网站查看时,它只显示href值,但不显示window.parent.location标签或值。这可能是由于权限造成的吗?
答案 0 :(得分:0)
你应该尝试使用:
var parentUrl = window.parent.location;
window.parent将让您进入父窗口,然后您可以对父窗口执行任何操作。
嗨鲁宾,
我相信你需要添加window.parent.location.search。您可以对查询字符串执行类似的操作。这个答案由Marwan提供:
function getQueryString() {
var queryStringKeyValue = window.parent.location.search.replace('?', '').split('&');
var qsJsonObject = {};
if (queryStringKeyValue != '') {
for (i = 0; i < queryStringKeyValue.length; i++) {
qsJsonObject[queryStringKeyValue[i].split('=')[0]] = queryStringKeyValue[i].split('=')[1];
}
}
return qsJsonObject;
}
只需从子窗口调用它,并以查询字符串作为对象。
例如,如果您有查询字符串?name = stack并且想要获取它,请尝试:
getQueryString().name
这将返回堆栈。