任何人都可以找出3个查询字符串参数中的原因,2个获取值,1个未定义。
<li class="@ViewBag.ShowNext">@Html.RouteLink("Next »", "Search", new { page = @ViewBag.NextPage, q = @ViewBag.TextClean, Option = @ViewBag.Option }, new { id = "frmPageNext" })</li>
使用Javascript / jQuery的
var vars = [], QStrings;
var q = document.URL.split('?')[1];
if (q != undefined) {
q = q.split('&');
for (var i = 0; i < q.length; i++) {
QStrings = q[i].split('='); vars.push(QStrings[1]);
vars[QStrings[0]] = QStrings[1];
}
}
$('#frmPageNext').live('click',function (e) {
e.preventDefault();
$.ajax({
url: '@Url.Action("Results")',
data: { "q": vars['q'], "page": vars['page'], "Option": vars['Option'] },
success: function (data) {
alert(vars['q']);
alert(vars['page']); //Returning undefined
alert(vars['Option']);
$("#dvSearchLeft").html(data).fadeIn(300);
}
});
});
------------------------- URL MVC -----------------
<a href="/Search-Results-For/Hotels/Web/2" id="frmPageNext">Next »</a>
The above would be <a href="/Search-Results-For/q=Hotels&Option=Web&Page=2
----------------当前代码--------------------
我试过移动javascript试图让代码工作,但是继续为所有3个参数定义
<script>
$('#frmPageNext').live('click',function (e) {
e.preventDefault();
var vars = [], QStrings;
var q = $('#frmPageNext').attr('href').split('?')[1];
if (q != undefined) {
q = q.split('&');
for (var i = 0; i < q.length; i++) {
QStrings = q[i].split('='); vars.push(QStrings[1]);
vars[QStrings[0]] = QStrings[1];
}
}
$.ajax({
url: '@Url.Action("Results")',
type: 'Get',
data: { "q": vars['q'], "Page": vars['page'], "Option": vars['Option'] },
dataType: 'html',
success: function (data) {
alert(vars['q']);
alert(vars['page']);
alert(vars['Option']);
$("#dvSearchLeft").html(data).fadeIn(300);
}
});
});
</script>
答案 0 :(得分:0)
这似乎是个案的问题:尝试使用vars['Page']
代替vars['page']
。
这当然是您的网址参数中有Page
变量。否则,您将从undefined
数组中获得vars
。
[评论后编辑]
因此,如果我做对了你想要实现的是将"/Search-Results-For/Hotels/Web/2"
转换为ajax查询字符串。然后你会做类似的事情:
var splittedHref = $('#frmPageNext').attr('href').split("/");
var q = splittedHref[2];
var Option = splittedHref[3];
var Page = splittedHref[4];
$.ajax({
url: '@Url.Action("Results")',
type: 'Get',
data: { "q": q,"Page": Page, "Option": Option },...
这可以解决您的问题吗?
答案 1 :(得分:0)
在JavaScript中,案例很重要。 page
与Page
不同。
我建议更换这一行:
vars[QStrings[0]] = QStrings[1];
有了这个:
vars[QStrings.shift().toLowerCase()] = QStrings.join("=");
请注意,这也会处理边缘情况,其中值本身有未编码的=
符号。
然后确保将data: {"q".....
行更新为仅使用小写字母。