3
@using(Html.BeginForm("About", "User", FormMethod.Post , new { id="aboutme"}))
{
    <fieldset>
          <ul>
            <li> <label class="block">About me</label> @Html.TextAreaFor(m=>m.About.AboutMe)</li>
            <li> <input type="button" id="submit" class="input-button" /> </li>
          </ul>
    </fieldset>
}

<script type="text/javascript">
    $(function () {
        $('#submit').click(function () {

            $.ajax({
                url: this.action,
                type: this.method,
                data: $(this).serialize(),
                success: function (result) {
                    // The AJAX call succeeded and the server returned a JSON
                    // with a property "s" => we can use this property
                    // and set the html of the target div
                    alert(result.s);
                    $('#ShowResultHere').html(result.s);
                }
            });
            // it is important to return false in order to
            // cancel the default submission of the form
            // and perform the AJAX call
            return false;
        });
    }); 
</script>

当我调试它时,操作 URL 变为/User/undefined.

我该如何解决?

4

3 回答 3

4

this关键字是指事件的来源,在本例中为按钮submit。你想要这个表格,所以试试这个(使用JQuery 遍历):

url: $(this).closest("form").prop("action"),
type: $(this).closest("form").prop("method"),
data: $(this).closest("form").serialize()

另一种方法是使用<input type='submit' class='input-button' />而不是button, 并监听事件$("#aboutme").submit(这种方式this实际上是指表单,正如您的代码所假设的那样)。

于 2012-10-06T19:09:52.423 回答
1

作为替代的 attr 函数,要获取属性 http://api.jquery.com/attr/的值, 并且 jQuery 有一个 ajax post 的简写,$.post http://api.jquery.com/jQuery .post/ 所以你的代码可以这样结束

$("#submit").click(function(event){
    event.preventDefault();
    $.post($("#aboutme").attr("action"), $("#aboutme").serialize(), function (data) {
        if (data != null) {
            alert(result.s);
            $('#ShowResultHere').html(result.s);
        }
    });
});
于 2012-10-08T14:58:58.740 回答
0

或者,您可以改用 Ajax.BeginForm 方法,该方法允许您为返回的任何 html 设置更新目标。

示例:将 Ajax.BeginForm 与 A​​SP.NET MVC 3 Razor 一起使用

于 2012-10-06T19:21:59.397 回答