【发布时间】:2015-09-06 21:50:35
【问题描述】:
好吧,我只想在不使用显式 jquery ajax 方法的情况下传递用户输入。我的想法如下:尝试使用 Ajax.ActionLink 并在 ajax-itself 之前为 ajax 设置必要的参数:
@Ajax.ActionLink("Call date", "CallingHistory", "Member", new {sortOrder = ViewBag.DateSortParam, pageNumber = ViewBag.PageNumber}, new AjaxOptions {UpdateTargetId = "historytable", HttpMethod = "get", OnBegin = "SetUrlParameters"}, new {id = "calldatetimelink"})
以及用于设置动作的 Url 参数的 js 代码:
<script>
function setUrlParameters() {
var k = 0;
this.href = this.href + "?includedialling=" + $("#chBox1").val();
this.href = this.href + "?includeincomingmissedcalls=" + $("#chBox2").val();
this.href = this.href + "?includeoutcomingmissedcalls=" + $("#chBox3").val();
}
</script>
动作方法签名如下:
public Task<ActionResult> CallingHistory(string sortOrder, int pageNumber, bool? includedialling,
bool? includeincomingmissedcalls, bool? includeoutcomingmissedcalls){...}
请注意,js-method 在 ajax-request 之前执行。有可能这样做吗?我一直想为 js-method 设置断点但在 chrome web-tools 中看不到它。提前致谢。
更新: 是的,认为这应该可行,但我更改了参数的脚本原因以无限方式添加:
function setUrlParameters(data) {
var oldref = data.href;
var par1 = '&includedialling=' + $("#chBox1").is(":checked");
var par2 = '&includeincomingmissedcalls=' + $("#chBox2").is(":checked");
var par3 = '&includeoutcomingmissedcalls=' + $("#chBox3").is(":checked");
var arr = data.href.split('&');
var resultUrl = arr[0] + arr[1] + par1 + par2 + par3;
$("#calldatetimelink").href = resultUrl;
}
在 chrome web-tools 中出现错误:
GET localhost:50307/Views/Shared/Partial/Member/CallingHistory.cshtml?X-Requested-With=XMLHttpRequest&_=1409287722659 404(未找到)
脚本中的调试器显示 resultUrl 变量的值:
//localhost:50307/Member/CallingHistory?sortOrder=datepageNumber=1&includedialling=false&includeincomingmissedcalls=true&includeoutcomingmissedcalls=false。 - 一切都很好。但最终我还没有得到结果。这个字符串“X-Requested-With=XMLHttpRequest&_=1409287722659”是从哪里出现的?显然,这是浏览器的行为。
【问题讨论】:
标签: jquery ajax asp.net-mvc