将文本提交给控制器,返回文本结果并输入div

时间:2017-07-29 17:49:19

标签: jquery model-view-controller

这是一个简化,因为HTLM是通过后端数据库呈现的,但我想在控制器中输入一个搜索字符串,然后将返回的结果作为HTML注入div

ajax查询正在命中控制器并返回正确的字符串

  1. 输入文本值将作为Nothing
  2. 发送
  3. 返回的字符串(正确)未更新div
  4. 有什么想法吗?

    谢谢

    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!盯着那几个小时,直到我贴出来之后才发现它!感叹!

    虽然提交的字符串仍有问题....

1 个答案:

答案 0 :(得分:1)

您应该将ajax数据作为键/值对传递,例如:

 data: { SearchText: $('#SearchTextBox').val() }

这将作为SearchText变量到达您的服务器。

其次,您的结果div有两个id属性(在原始问题中),这将导致您无法看到结果。