0

我正在尝试通过视图执行 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>
}

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

任何帮助/见解表示赞赏。

4

1 回答 1

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();
于 2013-07-09T15:12:04.713 回答