为什么我的提交按钮无法触发Javascript MVC?

时间:2010-04-29 14:12:08

标签: c# javascript html asp.net-mvc

我有一本书中的简单代码,代码应该在“结果”范围内显示来自我的控制器的数据。我错过了什么?

...控制器

    public string GetQuote(string symbol)
    {
        if (symbol.Trim() != "")
            return "99";
        else
            return "Sorry";
    }

... ASPX

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Index
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<%using (Html.BeginForm("GetQuote","Stocks", new { id = "quoteForm" })) { %>

    Symbol: 
<%= Html.TextBox("symbol") %>
<input type="submit" />
<span id="results"></span>
<% } %>
<p><i><%=DateTime.Now.ToLongTimeString() %></i></p>

<script type="text/javascript">
    $("form[action~='GetQuote']").submit(function() {
        $.post($(this).attr("action"), $(this).serialize(), function(response) {
            $("#results").html(response);
        });
        return false;
    });

</script>

2 个答案:

答案 0 :(得分:2)

您的选择器仅匹配<form>参数结尾的action元素 GetQuote
您需要将其更改为form[action~='GetQuote'],以匹配<form>参数包含 action的{​​{1}}元素。

或者,您可以在表单中添加ID,如下所示:

GetQuote

并将选择器更改为using (Html.BeginForm("GetQuote","Stocks", new { id = "quoteForm" }))

答案 1 :(得分:0)

虽然SLaks的回答确实让我朝着正确的方向前进......但我错过了DOM调用......

    $(document).ready(function() {
    $("form[action$='GetQuote']").submit(function() { 
    ...
});