我正在尝试使用jQuery+Ajax
提交模式表单。但表单没有提交给 Controller 。我在控制台中收到的唯一消息是这条消息-
{readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
abort: ƒ ( statusText )
always: ƒ ()
catch: ƒ ( fn )
done: ƒ ()
fail: ƒ ()
getAllResponseHeaders: ƒ ()
getResponseHeader: ƒ ( key )
overrideMimeType: ƒ ( type )
pipe: ƒ ( /* fnDone, fnFail, fnProgress */ )
progress: ƒ ()
promise: ƒ ( obj )
readyState: 4
responseText: "Array↵(↵ [d_token] => Ox0d4UwoFNKZXDTZFKoX0iijIpaQQWpHoQ8B394p↵ [id] => 12↵ [d_full_name] => Hrushikesh Satapathy↵ [d_password] => 8585858585↵)↵"
setRequestHeader: ƒ ( name, value )
state: ƒ ()
status: 200
statusCode: ƒ ( map )
statusText: "OK"
then: ƒ ( onFulfilled, onRejected, onProgress )
__proto__: Object
我确保包含 CSRF token 的 meta
标记,但每次我单击提交按钮(UI 中的 Delete 按钮)时模态表单中,Ajax 的 error:
部分被触发。这是我的代码
模态
<button type="button" id="delete_user" class="btn btn-danger" data-toggle="modal" data-target="#deleteModal">Delete</button>
<div class="modal-body ">
<strong class="text-info text-center ">Please Confirm your Details</strong>
<form id="delete_user_form" method="post">
@csrf
<div class="form-group">
<input type="hidden" name="_token" id="d_csrf" value="{{Session::token()}}">
<input type="hidden" class="form-control" id="d_id" name="d_id" value="{{Auth::user()->id}}">
<!-- <input type="text" class="form-control" id="d_id" name="d_id" value="{{Auth::user()->id}}" readonly> -->
<label for="d_full_name" class="col-form-label">Full Name:</label>
<input type="text" class="form-control" id="d_full_name" name="d_full_name">
</div>
<div class="form-group">
<label for="d_password" class="col-form-label">Confirm Your Password:</label>
<input type="password" class="form-control" name="d_password" id="d_password">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-danger" id="final_delete">Delete User</button>
</div>
</div>
</div>
</div>
Ajax部分
<script type="text/javascript">
// $(document).ready(function(){
// alert("HELLO");
// $('#delete_user').click(function(e){
// e.preventDefault();
$('#deleteModal').ready(function(){
// alert("HELLO");
$('#final_delete').on('click', function(e) {
e.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
// var get_data = $("#delete_user_form").serialize();
$.ajax({
method:"post",
url:"delete_user",
cache: false,
processData:true, //Required
contentType: 'application/x-www-form-urlencoded',
// data:get_data,
data:
{
'd_token' : $("#csrf").val(),
'd_id' : $('#d_id').val(),
'd_email' : $('#d_email').val(),
'd_password' : $('#d_password').val(),
},
dataType :"JSON",
success:function (e){
swal({
title: "User deleted Successfully",
text: "You will now be logged out.Sorry to see you go!!",
icon: "warning",
button: "Ok",
dangerMode:true
});
// console.log(e);
setTimeout(function(){ window.location = "login";},2000);
},
error:function (e){
swal({
title: "Oops! Some Error",
text: "Please try again later",
icon: "warning",
button: "Ok",
dangerMode: true,
});
// console.log(e.responseText);
},
}); //ajax ends here
}); //$("#final_delete").click ends
});
////$('#delete_user').click(function(e) ends
// });
// });
</script>
Controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class userController extends Controller
{
public function delete_user(Request $request){
// echo "hello";exit;
$user=Auth::user();
$d_id = $request->d_id;
$d_email = $request->d_email;
$d_password = Hash::make($request->d_password, ['memory' => 1024,'time' => 2,'threads' => 2,]);
// print_r($d_password);exit;
date_default_timezone_set("Asia/Kolkata");
$d_time = date("Y-m-d,H:i:s ");
// print_r($request->all());exit;
// if (Auth::check()) {
$act = "SELECT";
$act2 = "DELETE";
$user_login = DB::select('CALL my_stored_procedures(?,?,?,?,?,?,?,?,?,?,?,?)', array($act,$u_id,"","","","",0,$d_time, "","","",$d_time));
// print "<pre>"; print_r($user_login);exit;
foreach($user_login as $loguser){
if($d_email===$loguser->email){
if ($d_password===$loguser->password)){
// return redirect('welcome_user');
DB::select('CALL my_stored_procedures(?,?,?,?,?,?,?,?,?,?,?,?)', array($act2,$u_id,"","","","",0,$d_time, "","","",$d_time));
return response()->json(
[
'success' => true,
]
);
Auth::logout();
Session::flush();
// return redirect('login');
}else{
return response()->json(
[
'success' => false,
'message'=>"Wrong Password"
]
);
}
}else{
return response()->json(
[
'success' => false,
'message'=>"Wrong Name"
]
);
}
} //foreach ends
// } //auth::check ends
}//delete_user ends here
} //end of class
路线
Route::post('delete_user', 'userController@delete_user')->middleware('auth')->name('delete_user');
表单数据已传输到 Controller ,但数据库未更新。并且 success:
在 Ajax 中never 被触发。请告诉我出了什么问题?
最佳答案
你犯了一个愚蠢的错误。更改u_id
至d_id
在你的 Controller 中
$user_login = DB::select('CALL my_stored_procedures(?,?,?,?,?,?,?,?,?,?,?,?)', array($act,$u_id,"","","","",0,$d_time, "","","",$d_time)); // print "<pre>"; print_r($user_login);exit;
至
$user_login = DB::select('CALL my_stored_procedures(?,?,?,?,?,?,?,?,?,?,?,?)', array($act,$d_id,"","","","",0,$d_time, "","","",$d_time)); // print "<pre>"; print_r($user_login);exit;
另外,在另一个调用过程中执行此操作。
关于jquery - Ajax 模式表单提交中的 {readyState : 4, getResponseHeader : ƒ, getAllResponseHeaders : ƒ, setRequestHeader : ƒ, overrideMimeType : ƒ, …} 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64314641/