这是一个简化,因为HTLM是通过后端数据库呈现的,但我想在控制器中输入一个搜索字符串,然后将返回的结果作为HTML注入div
ajax查询正在命中控制器并返回正确的字符串
有什么想法吗?
谢谢
HTML
<div class="input-group" style="margin-right: 25px;">
<input type="text" id="SearchTextBox" class="form-control pull-right" placeholder="Search..." name="query" value="">
<div class="input-group-btn">
<button type="submit" onclick="onChangeSearch();" class="btn btn-success"><span class="glyphicon glyphicon-search"></span></button>
</div>
</div>
<div class="container body-content" id="main">
<div class="row">
<div class="col-md-12">
<div id="SearchResults" class="search_results" id="SearchDiv"><p> Search Results</p>
</div>
jQuery函数
<script>
function onChangeSearch() {
jQuery.ajax({
url: '@Url.Action("SearchBox", "Home")',
type: 'POST',
data: $('#SearchTextBox').val(),
success: function (data) {
//$('#SearchDiv').html(data);
$('#SearchDiv').replaceWith(data);
alert(data);
}
});
}
控制器(已尝试过多种变体,包括JavaScriptResult)。
<HttpPost()>
Function SearchBox(SearchText As String) As String
Try
Dim vMessage As String = "<p>No results for " & SearchText & "</p>"
Return vMessage
'Return JavaScript(SB.ToString)
Catch ex As Exception
EmailError(ex)
Return Nothing
End Try
End Function
=============================================== ===================== 编辑 - 弄清楚为什么没有输入结果 - 有两个ID为div!盯着那几个小时,直到我贴出来之后才发现它!感叹!
答案 0 :(得分:1)
您应该将ajax数据作为键/值对传递,例如:
data: { SearchText: $('#SearchTextBox').val() }
这将作为SearchText
变量到达您的服务器。
其次,您的结果div
有两个id
属性(在原始问题中),这将导致您无法看到结果。