C# - 通过视图调用jquery实际上不是触发方法

时间:2013-07-09 15:03:17

标签: c# jquery ajax

我正在尝试通过视图进行jquery并且它没有触发后端方法我不知道为什么它没有正确调用并需要第二(或第三)组问题。

<script src="../Scripts/jquery-1.7.1.js" type ="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {

        $("[data-form]").each
        (
            function (formDiv)
            {
                $(formDiv).children("input[type='button']").each
                (
                    function (elem)
                    {
                        elem.click
                        (
                            function () {

                                var formName = $(formDiv).attr("data-form").val();

                                var qString = "";

                                $(formDiv).children("input[type!='button']").each
                                (
                                    function (inp) {
                                        var name = $(inp).attr("name").val();
                                        var val = $(inp).val();
                                        qString += name + "=" + val + "&";
                                    }
                                );

                                qString = qString.substring(0, qString.length - 1);

                                switch (formName) {
                                    case 'DQPOST':
                                        $.ajax("/api/D/DQPost?" + qString,
                                       function (resp) {
                                           alert(resp);
                                       });
                                        break;
                                    case 'DQReply':
                                        $.ajax("/api/D/DQReply?" + qString,
                                       function (resp) {
                                           alert(resp);
                                       });
                                }
                            }
                        );
                    }
                );
            }
        );
    });

 </script>

<h2>D-Profiles</h2>

@foreach(var up in Model)
{
    @up._id

    <div data-form="DQPost">
        <input type="hidden" name="ID" value="@up._id" />
        <h7>The thread ID</h7>
        <input type="text" name="ThreadID" /><br />
        <h7>The message&nbsp;</h7>
        <input type="text" name="Message" /><br />
        <input type="button" value="Post Comment"/>
    </div>

    <div data-form="DQReply">
        <input type="hidden" name="ID" value="@up._id" />
        <h7>The thread ID</h7>
        <input type="text" name="ThreadID" /><br />
        <h7>The Parent thread ID</h7>
        <input type="text" name="ParentID" /><br />
        <h7>The message&nbsp;</h7>
        <input type="text" name="Message" /><br />
        <input type="button" value="post comment" /><br />
    </div>
}

正如您所看到的,可以将多个配置文件登录到系统中,这可能是我最大的问题。我认为我没有正确处理它。

感谢任何帮助/见解。

1 个答案:

答案 0 :(得分:0)

就是这一行:

var formName = $(formDiv).attr("data-form").val();

$(formDiv).attr("data-form")返回一个字符串,该字符串没有.val()方法,因此JS完全错误输出。删除.val()部分,你应该没事。

演示:http://jsfiddle.net/M9ZgP/1/

修改:此行也是如此:

var name = $(inp).attr("name").val();