这应该很容易,但我无法弄清楚如何做到这一点。我有一个文本框,用户将在其中键入要搜索的名称。然后,用户将必须提供一些附加信息,例如从下拉菜单中选择该人居住的州。选择状态后,我正在执行Ajax帖子以获取该州内的城市列表。问题是,只要加载了城市,我就会丢失在文本框中输入的值。如何使这个文本框保持不变,所以我不会失去价值?
function ValueSelected(state, city, zip) {
var SelectedState = state;
var SelectedCity= city;
var ZipCode= zip;
if (SelectedState.length > 0) {
// var url = '@Url.Action("SetState", "FindPerson")';
$.ajax({
url: '@Url.Action("SetState", "FindPerson")',
type: 'POST',
datatype: 'text',
data: { "SelectedState": SelectedState, "SelectedCity": SelectedCity, "ZipCode": ZipCode},
cache: false,
// contentType: 'application;text;charset=UTF-8',
success: function (e) {
window.location.href = window.location.href;
},
error: function (e) {
alert('error');
}
});
}
}
更新2014年7月7日:
我写了一个函数,当用户从下拉列表中选择一些内容时,它会将文本框值添加到cookie中。然后,我检查cookie以查看在加载页面时cookie是否包含某些内容。我将cookie设置为在30分钟后过期。
function setCookieInfo(name, value) {
if (name != null && name != "") {
setCookie(name, value, 24);
}
}
答案 0 :(得分:0)
由于您正在执行所有此客户端,因此我不建议执行window.location.href,因为它不会保留任何客户端设置。相反,你应该处理客户端上的所有内容或在视图中设置表单并调用(注意我在这里使用JQuery)$("#form")。submit()来回发值。在该表单中,您可以使用隐藏字段回发所有选定的值,然后从服务器重新加载它们。
此外,当您执行AJAX请求时,成功会返回任何内容,因此您的操作可以返回:
return PartialView("XYZ");
将返回HTML,您可以将其附加到UI。您还可以返回JSON,并构建包含城市的<select>
项。
使用window.location.href = ...
并不好,因为这会对服务器产生持续的get请求,而你必须在查询字符串中传递信息。