$.post 不断重定向我
$.post keeps redirecting me
我对jquery $.post函数有问题。我经常使用这个函数,除了一种情况外,同样的函数工作正常,我不明白为什么它在执行脚本后不断重定向我,这是 js 代码:
var record;
$('.delbtt').on('click', function(e){
e.preventDefault();
var deleteid = $(this).parent().parent().find('#id').text();
record = $(this).parent().parent();
$('#delrecord').empty().val(deleteid);
});
$(document).on('submit', '#delteform', function() {
var formData = $(this).serialize();
$.post('includes/delete.php',formData,processData);
function processData(data){
record.remove();
};
});
.HTML:
<!-- Modal -->
<div class="modal fade" id="deleteFormModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form id="deleteform" class="form-horizontal" role="form" action="includes/delete.php" method="POST"> <!-- -->
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Delete record</h4>
</div>
<div class="modal-body">
<p>Are you sure you want to delete this person?</p>
</div>
<input type="hidden" id="delrecord" name="delrecord" value="" />
<div class="modal-footer">
<button type="button" class="btn btn-default empty" data-dismiss="modal">Cancel</button>
<button id="delentry" type="submit" class="btn btn-danger">Delete Person</button>
</div>
</form>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
我知道该函数已成功执行,因为如果我将alert("Why is this not working?");
放在record.remove();
之后,我可以看到警报并在后台执行了代码,但它不是停留在同一页面上,而是将我重定向到"包含/删除.php"。我尝试禁用 JS 中的所有其他 $.post 函数,我尝试使用 $('#deleteform').submit()
,我尝试将其放在我的主要$(document).ready(function() {});
之外,以获得相同的结果......总是相同的结果,它在函数完成后重定向我,而不是停留在页面上。有人知道我为什么会有这种行为吗?
PHP代码:
<?php
include('budgetprop/Initialize.php');
Database::GetInstance()->ConnectToServer($errors);
$record = $_POST['delrecord'];
# CONNECT TO DB
if(Database::GetInstance()->ConnectToServer($errors)){
$insertSQL1 = "DELETE FROM salaries WHERE record_id = '".$record."' ";
$stmt1 = sqlsrv_query(Database::GetInstance()->databaseConnection, $insertSQL1);
# IF THERE IS AN ERROR
if(!$stmt1){
echo "Error, cannot delete record";
}else{
Database::GetInstance()->LastInsertId($stmt1);
}
# IF ALL QUERIES WERE SUCCSESSFUL, COMMIT THE TRANSACTION, OTHERWISE ROLLBACK
if($stmt1 && !$errors){
sqlsrv_commit(Database::GetInstance()->databaseConnection);
# FREE THE STATEMENT
Database::GetInstance()->FreeDBStatement($stmt1);
echo "success";
return true;
}else{
sqlsrv_rollback(Database::GetInstance()->databaseConnection);
# FREE THE STATEMENT
Database::GetInstance()->FreeDBStatement($stmt1);
return false;
}
# NO CONNECTION WAS MADE
}else{
return false;
};
?>
preventDefault()
也不起作用
听起来您的表单仍在提交中,因此重定向。 你可以用preventDefault()
来阻止它...
$(document).on('submit', '#deleteform', function(e) {
e.preventDefault();
var formData = $(this).serialize();
$.post('includes/delete.php',formData,processData);
function processData(data){
record.remove();
};
});
假设"deleteform"是页面上表单元素的ID,其中您有一个"submit"类型的输入或按钮,我建议将delentry按钮更改为具有"按钮"类型。
大多数浏览器将在单击该按钮时对具有提交类型的输入或按钮的表单执行 POST/GET。
然后,我将更新您的 jQuery 事件处理程序以选择按钮并指定一个 onclick 事件:
$('#delentry').click(function() {
...
});
如果您希望保持某种形式的优雅降级,您可以将标记保留为提交类型按钮,并在 $(document(.ready(( 上将按钮的类型更新为"按钮"。
- AJAX不会在文件上传后重定向到网页-POST方法
- javascript:发送带有音频文件的POST,然后重定向到新页面
- 如何在fetch post调用后管理重定向请求
- 带有post值的JS jQuery重定向,不带<表单>
- Node.js POST请求,无重定向
- 试图在表单post之后使用jQuery.post()重定向用户
- 防止表单 POST 重定向发生,但仍保留引导验证
- 使用 Ajax POST 查询 MVC 控制器,然后使用模型重定向
- 在 POST 后使用 Location 标头和 jQuery 重定向
- $.post 不断重定向我
- JavaScript 窗口重定向安全地传递参数 (POST)
- 如何使用Javascript通过“POST”方法重定向
- 使用 Javascript/jQuery 重定向时将 POST 数据发送到顶级 iframe
- 如何使用jquery在带有“POST”的新选项卡中进行重定向
- 在 POST ajax 处理程序中更改 window.location 会发出新的 ajax 调用,而不是重定向
- javascript重定向到带有表单操作post的页面,然后返回到带有输入值的上一页
- 重定向302丢失POST数据
- HTML POST->重定向工作,XMLHTTPrequest->重定向不起作用(无法从null发出任何请求
- 如何在express odeJS中从post请求中获取数据,并在提交后将用户重定向到html文件
- 如何重定向 POST 请求并在 Sails.js 中传递发布数据