jQuery的触发提交表单结果无限循环 [英] jquery trigger for submit form results infinite loop

查看:522
本文介绍了jQuery的触发提交表单结果无限循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在开始我的插件运行MVC中的C#控制器加载数据的触发只有一次,但该网页正在刷新无限(循环)。当我preSS提交按钮运行正常。

When starts my plugin it runs a trigger for loading data from mvc c# controller just once but the page is refreshing infinite (loop). When I press submit button is running ok.

下面的问题是:

    if (opcoes) {
        $.extend(defaults, opcoes);
                $('#formPaginacao').trigger('submit');
            }

code的休息(工作时,我preSS按钮提交):

Rest of code (works when I press button submit):

    return this.each(function () {

        function postProcessing(data) {
            dados = data;
            p.totalRegistros = dados.length;
            defaults.totalPaginas = Math.ceil(p.totalRegistros / defaults.registrosPorPagina);
            defaults.registroAtual = 0;
            renderiza();
        }
        $('#formPaginacao').submit(function (e) {
            e.preventDefault();
            dados = null;
            getValues();
            e.stopPropagation();
        });

        function getValues() {
            var dadosPesquisaForm = $('#formPaginacao').serialize();
            var dadosPesquisaJson = JSON.stringify(dadosPesquisaForm);
            var dadosEnvio = JSON.parse(dadosPesquisaJson);
            $.ajax({
                type: 'POST',
                url: defaults.controleCarregaDados,
                data: dadosEnvio,
                dataType: 'json',
                cache: false,
                success: function (data) { postProcessing(data); },
                async: true,
                error: function (erro) {
                    alert('erro ajax=' + erro)
                }
            });
        };

{...}

推荐答案

你有太多的内置到这一点。改变你的提交按钮只是一个按钮

you have too much built into this. change your submit button to just a button

<input type="button" id="formPaginacao" value="Submit" />

然后你只需要

$('#formPaginacao').on('click', function (e) {
    $.ajax({
        type: 'POST',
        url: defaults.controleCarregaDados,
        data: $('#formPaginacao').serialize(),
        dataType: 'json',
        cache: false,
        success: function (data) { postProcessing(data); },
        async: true,
        error: function (erro) {
            alert('erro ajax=' + erro)
        }
    });
});

这不应该是在每个语句中。只是把它放在

This shouldn't be in an each statement either. just put it in

$(document).ready(function(){
    //button click here
});

form.serialize会把所有的值从形式反馈给控制器。控制器上的投入应该是您已经在视图中定义的同一型号

form.serialize will pass all of the values from your form back to the controller. the input on your controller should be the same model that you have defined on your view

[HttpPost]
public ActionResult formPaginacao(ModelType model){
    //do something with the data
    //return json back tot he view
}

这篇关于jQuery的触发提交表单结果无限循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆