【问题标题】:parse html and invoke submit button using jquery使用 jquery 解析 html 并调用提交按钮
【发布时间】:2015-10-02 06:24:21
【问题描述】:

我正在调用 Web 服务方法并尝试调用某些操作。但是,响应是'html'。我需要解析它并调用提交按钮并附加输出。

html(数据)如下所示:

 <form target="_blank" action='../someService.asmx/Action' method="POST">
  <table >      
    <tr>
        <td></td>
        <td align="right"><input type="submit" value="Invoke" class="button"></td>
    </tr>
  </table>
</form>

这里是 jquery 部分:

$(data).find('form').find('input[type="submit"]').submit(function(e){
    $('#result').append(output);
    event.preventDefault();                
});  

【问题讨论】:

    标签: javascript jquery ajax parsing html-parsing


    【解决方案1】:

    我看到三个问题,首先,阻止默认值应该是处理程序的第一行(我的猜测),第二,你正在调用 event.preventDefault 但你的处理程序有一个名为 e 的参数,第三,你应该在表单上调用submit 事件,而不是在输入上:

    data = $.parseHTML(data);
    $(data).find('form').submit(function(event){
        event.preventDefault();  
        $('#result').append(output);
    });
    

    我不确定preventDefault 调用是否应该始终位于处理程序的开头,但我认为更容易知道该处理程序正在阻止事件的默认行为。

    编辑

    在你的 cmets 之后,我相信你想要做的是:

    data = $.parseHTML(data);
    var $form = $(data).find('form');
    $form.submit(function(event){
        event.preventDefault();
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            success: function (data) {
                $('#result').append(data);
            },
            error: function (error) {
                console.log(error);
            }
        });
    });
    $form.trigger('submit');
    

    【讨论】:

    • 我之前尝试过,它没有输出任何东西。
    • 您要附加到#result 的输出变量是什么?
    • 其实我试图附加提交事件后得到的输出。但是,提交事件不起作用,因为我尝试使用 alter('test'); 进行测试;它没有输出任何东西。
    • 嗯,首先,代码只是为提交事件添加一个处理程序,而不是触发事件。其次,您必须在该处理程序中添加一个 ajax 调用,您不会自动获得响应:) 让我在答案中为您快速编辑。
    • 已编辑。请检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多