我有一个像这样的表格
<form id="formCategorias" action="./index.php" method="post">
<input type="hidden" value="5" name="pais">
<table>
<tbody>
<tr class="row">
<td>Renta Comerciales</td>
<td>
<input type="text" class="validate" value="" id="inputcat_0" name="" style="border: 1px solid rgb(221, 221, 221);">
<select id="categoria_0" name="categoria_0">
<option value="0">Provincias</option>
<option value="Oficinas">Oficinas (11)</option>
<option value="Ranchos">Ranchos (12)</option>
<option value="Naves Industriales">Naves Industriales (15)</option>
</select>
<button onclick="seleccionarCategoria(0)" type="button">+</button>
</td>
</tr>
<tr>
<td align="right" colspan="2">
<input type="submit" id="categorias" value="Enviar" name="submit">
</td>
</tr>
</tbody>
</table>
我正在使用以下脚本处理它
$(document).on('submit', '#formCategorias', function (event) {
$(".validate", this).css("border", "1px solid #ddd");
event.preventDefault();
var valid = true;
$.each($(".validate", this), function () {
if ($(this).val().length == 0) {
$(this).css("border", "1px solid red");
valid = false;
}
});
var formTosubmit = $(this).attr('id');
var jsonCategoria = JSON.stringify(categoria),
jsonFeed = JSON.stringify(feed),
url = "xxxxxxxxxx/feeds/web/ajax.php";
if (jsonCategoria != '' && jsonFeed != '') {
var posting = $.post(url, {
im_core: 'updateCategorias',
Categorias: jsonCategoria,
xmlFeeed: jsonFeed,
idFeed: 11
}).done(function (data) {
if (data == 1) {
valid = true;
} else alert("Check the form");
});
}
if (valid == true) alert('#' + formTosubmit);
$('#' + formTosubmit).submit();
});
问题是在我使用submit()函数提交表单后调用ajax后,浏览器反复执行Ajax调用(),导致错误,
修复可能是submit()函数应该在action标记中提供的url上提交表单而不是给ajax调用提供的url,
任何人都可以建议我
先谢谢
答案 0 :(得分:0)
这里有两个问题
所以
$(document).on('submit', '#formCategorias', function (event) {
$(".validate", this).css("border", "1px solid #ddd");
event.preventDefault();
var valid = true;
$.each($(".validate", this), function () {
if ($(this).val().length == 0) {
$(this).css("border", "1px solid red");
valid = false;
}
});
var frm = this;
var formTosubmit = $(this).attr('id');
var jsonCategoria = JSON.stringify(categoria),
jsonFeed = JSON.stringify(feed),
url = "xxxxxxxxxx/feeds/web/ajax.php";
if (jsonCategoria != '' && jsonFeed != '') {
var posting = $.post(url, {
im_core: 'updateCategorias',
Categorias: jsonCategoria,
xmlFeeed: jsonFeed,
idFeed: 11
}).done(function (data) {
if (data == 1) {
valid = true;
alert('#' + frm.id);
frm.submit()
} else {
alert("Check the form");
}
});
}
});
答案 1 :(得分:0)
我的方法将在
之下编写ajax调用
$request = $ajax ( ... )
不要在ajax中写 .done 或 success:参数
从ajax URL发送回调值,该值具有true或false值
$request.done(function(resp) {
if ( resp.parameter === true )
$('#formID').submit();
});
$request.fail( function () {
alert('ajax fails');
});
替代方法:在 jquery 1.5
中添加的$.ajax中使用dataFilter:
参数
演示代码:
$response = $.ajax( {
.....
dataType: 'JSON',
dataFilter: function(result, type) {
// console.group('DataFilter');
// console.log(result);
// console.log(type);
// console.groupEnd();
if (type === 'JSON') {
var parsed_data = $.parseJSON(result);
// console.info('Parsed Data');
// console.log(parsed_data);
// code to pre-filtering function to sanitize the response.
$finalThing = JSON.stringify({ everyThing : true });
return $finalThing;
} // end of if
} // end of DataFilter
}); // end of $.ajax
$response.done (function(resp) {
// here now `resp` will have $finalThing which comes from dataFilter
if( resp.everyThing == true ) { $('#formId').submit(); }
});
这是一个用于清理响应的预过滤功能。你应该 返回已清理的数据。该函数接受两个参数:raw 从服务器返回的数据和'dataType'参数。
答案 2 :(得分:0)
在你的被叫php中,你是否只是尝试了一个回声?
济