我找到了从this question获取查询字符串的方法。但我无法通过ajax获取请求页面内的URL。
示例:
<div class="result"></div>
<script>
$(function() {
$.ajax({
url: 'ajax_inner.html',
type: 'GET',
data: 'somename=someval',
dataType: 'html',
success: function(data) {
$('.result.).html(data);
}
});
});
</script>
这是main.html页面。以下是ajax_inner.html页面。
<p>your query string is: <span class="qsval"></span>.</p>
<script>
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}// getParameterByName
$(function() {
$('.qsval').text(getParameterByName('somename'));
});
</script>
我无法从传递给ajax页面的查询字符串中获取任何内容。
我在ajax页面内尝试了alert(location);
,但它返回了main.html页面。
如何在 ajax页面中获取查询字符串?
答案 0 :(得分:2)
您必须记住,使用.html
注入<script>
标记会使脚本在调用页面上执行,而不是在目标页面上执行。您需要让服务器根据QueryString更改ajax_inner.html
的内容。
然后你必须问自己,你为什么要在目标上执行脚本,而不是在成功回调中?为什么不这样做:
success: function(data) {
$('.result').html(data).find(".qsval").text("someval");
}
"someval"
可以来自任何局部变量。
答案 1 :(得分:2)
基本上问题是是没有&#34; Ajax页面&#34;使用自己的URL,只动态加载一些HTML内容并插入另一个/唯一页面。如果ajax_inner.html内容从一开始就在页面中而不是动态加载,那么它们将处于相同的上下文中(尽管如果在加载时页面上显示包含的脚本显然会更快执行)。它没有自己的范围,location
因此只是引用父/唯一页面的location
属性。
您可能会混淆使用<iframe>
动态加载HTML内容,它们有自己的页面范围,可以这么说。