2014-03-06 44 views
1

當啓動我的插件時,它運行一個觸發器,用於從mvc c#控制器加載數據一次,但頁面刷新無限(循環)。當我按提交按鈕運行正常。提交表單結果無限循環的jQuery觸發器

這裏的問題是:

if (opcoes) { 
     $.extend(defaults, opcoes); 
       $('#formPaginacao').trigger('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) 
       } 
      }); 
     }; 

{...}

回答

1

你有太多的建成這個。改變你的提交按鈕,只需一個按鈕,

<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) 
     } 
    }); 
}); 

這不應該是在每個語句中。只是把它放在

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

form.serialize將所有的值從表單傳遞迴控制器。控制器上的輸入應與您在視圖中定義的模型相同

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

非常感謝!工作! –