当启动我的插件时,它运行一个触发器,用于从mvc c#controller加载数据一次,但页面刷新无限(循环)。当我按下提交按钮运行正常。
问题在于:
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)
}
});
};
{...}
答案 0 :(得分: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
}