我有一个AJAX POST请求,它应该将用户的搜索过滤器发送到控制器操作并返回适当的结果。这完美地工作,然后它就停止了工作。我没有改变任何东西,它工作正常,模型完全按预期绑定,然后它刚刚破坏,现在它只会绑定到非数组项。
这是我的完整Jquery AJAX代码:
var parent = $('.recipe-search > .search-form > .filter-panel > .area');
var searchobj = {
SearchTerm: $(parent).find('input.search-terms').val(),
TimeRange:
[
$(parent).find('div.time-range').slider("values", 0),
$(parent).find('div.time-range').slider("values", 1)
],
DifficultyRange: [
$(parent).find('div.difficulty-range').slider("values", 0),
$(parent).find('div.difficulty-range').slider("values", 1)
],
Vegetarian: $(parent).find('input.vegetarian').is(':checked'),
Vegan: $(parent).find('input.vegan').is(':checked'),
DietTags: $(parent).find('input.diet-tags').val().split(' ')
};
$.ajax({
type: "POST",
url: $('.recipe-search > .search-form').attr('action'),
data: searchobj,
error: function () {
alert("There was an error getting your search results, please try again");
},
success: function (result) {
popresults(result);
}
});
这是C#模型:
对于想知道滑块是JQuery UI滑块的人来说。
在Chrome网络标签中,我可以看到请求按预期发送
然而,当遇到断点时查看调试监视窗口,很明显它们没有正确绑定到模型
我会重复自己,我知道你们中的一些人会打电话给我说我确实改变了一些东西,我必须这样做但是我并没有在它完全按照预期工作之间改变它,而是它没有工作
让我觉得奇怪的是,请求中发送的数组(查看网络标签照片)似乎是将两个值作为单独的属性而不是数组中的值发送。
答案 0 :(得分:0)
似乎在AJAX代码中添加两行修复了这个问题:
datatype: "json",
traditional: true
现在它完全符合预期。