Reputation: 641
I am sending the id
of dom element as ajax
data to laravel controller but Request
object is empty on the controller side. I have returned the custom array to ajax
to check if controller function working and it's returning the response to ajax
success.
Other functions on the same controller getting the Request
data from ajax
but not this function. I don't get any error so it's difficult to debug the issue
My Ajax call
$(document).on('click', 'i[id^="delete"]', function () {
var alias_id = $(this).prop('id');
//console.log(alias_id);
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: "{{ route('deletealiasname') }}",
method: "post",
data: {'alias_id': alias_id},
dataType: "json",
contentType: false,
cache: false,
processData: false,
beforeSend : function()
{
console.log(alias_id);
},
success: function (response) {
console.log(response);
}
});
});
Route:
Route::post('/deletealiasname', 'API\UserProfileController@deleteAliasName')->name('deletealiasname');
Controller:
public function deleteAliasName(Request $request)
{
$var = $request->all();
return array($var);
}
Output of dd($request)
POST http://127.0.0.1:8000/api/deletealiasname
----------------------------------------------
------------ ----------------------------------------------------
date Thu, 06 Jun 2019 17:52:53 +0000
controller "UserProfileController"
source UserProfileController.php on line 165
file app\Http\Controllers\API\UserProfileController.php
------------ ----------------------------------------------------
Illuminate\Http\Request {#43
#json: null
#convertedFiles: null
#userResolver: Closure($guard = null) {#282
class: "Illuminate\Auth\AuthServiceProvider"
this: Illuminate\Auth\AuthServiceProvider {#40 …}
parameters: {
$guard: {
default: null
}
}
use: {
$app: Illuminate\Foundation\Application {#2 …}
}
file: "C:\project\newglit\myglit\vendor\laravel\framework\src\Illuminate\Auth\AuthServiceProvider.php"
line: "83 to 85"
}
#routeResolver: Closure() {#284
class: "Illuminate\Routing\Router"
this: Illuminate\Routing\Router {#26 …}
use: {
$route: Illuminate\Routing\Route {#221 …}
}
file: "C:\project\newglit\myglit\vendor\laravel\framework\src\Illuminate\Routing\Router.php"
line: "650 to 652"
}
+attributes: Symfony\Component\HttpFoundation\ParameterBag {#45
#parameters: []
}
+request: Symfony\Component\HttpFoundation\ParameterBag {#44
#parameters: []
}
+query: Symfony\Component\HttpFoundation\ParameterBag {#51
#parameters: []
}
+server: Symfony\Component\HttpFoundation\ServerBag {#47
#parameters: array:29 [
"DOCUMENT_ROOT" => "C:\project\newglit\myglit\public"
"REMOTE_ADDR" => "127.0.0.1"
"REMOTE_PORT" => "56590"
"SERVER_SOFTWARE" => "PHP 7.1.29 Development Server"
"SERVER_PROTOCOL" => "HTTP/1.1"
"SERVER_NAME" => "127.0.0.1"
"SERVER_PORT" => "8000"
"REQUEST_URI" => "/api/deletealiasname"
"REQUEST_METHOD" => "POST"
"SCRIPT_NAME" => "/index.php"
"SCRIPT_FILENAME" => "C:\project\newglit\myglit\public\index.php"
"PATH_INFO" => "/api/deletealiasname"
"PHP_SELF" => "/index.php/api/deletealiasname"
"HTTP_HOST" => "127.0.0.1:8000"
"HTTP_CONNECTION" => "keep-alive"
"CONTENT_LENGTH" => "15"
"HTTP_CONTENT_LENGTH" => "15"
"HTTP_ACCEPT" => "application/json, text/javascript, */*; q=0.01"
"HTTP_ORIGIN" => "http://127.0.0.1:8000"
"HTTP_X_REQUESTED_WITH" => "XMLHttpRequest"
"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safar
i/537.36"
"CONTENT_TYPE" => "text/plain;charset=UTF-8"
"HTTP_CONTENT_TYPE" => "text/plain;charset=UTF-8"
"HTTP_REFERER" => "http://127.0.0.1:8000/user/profile/"
"HTTP_ACCEPT_ENCODING" => "gzip, deflate, br"
"HTTP_ACCEPT_LANGUAGE" => "en-US,en;q=0.9,nb;q=0.8"
"HTTP_COOKIE" => "XSRF-TOKEN=eyJpdiI6IkdPR0NtcGNXdEJxKzVwZERheEZSMlE9PSIsInZhbHVlIjoiXC9EbHBHSXM2U0c1TzdjUHhOT25BZ1RQeXdzd3l0WGFw
bmNhWWduakJFRU9ubVBcL3pJdzJMcTI1SCtqQnR4Sk05IiwibWFjIjoiYjk4Mzk3M2ZiOGJlOGZkOGNmYjk1NjBjZGQzNTY3YzIzOWUwNzliNDdjNjNhMzRhODZkOThmZGI2NzU
3MDc2OCJ9; laravel_session=eyJpdiI6IktNaHlnY29BZnI3VUlEcHpnUU1vU2c9PSIsInZhbHVlIjoiUkxWTkVWdHlLcEZGY0FDOXAxMWdaNHROa2szSUY3ZlhWRm94V2ox
ZWZSYlc4SDdcL3FSdUlVNGZ0YkFreHl4VHQiLCJtYWMiOiJlOGQ0MjYwZTRiN2ZkOTQwYWRmNTcxNjYyNTY0YmYyZjY5MjBkN2E3ZWMxZGM3YWViYzQ4ODcxYzUyZTg0MTE3In0
%3D"
"REQUEST_TIME_FLOAT" => 1559843573.3443
"REQUEST_TIME" => 1559843573
]
}
+files: Symfony\Component\HttpFoundation\FileBag {#48
#parameters: []
}
+cookies: Symfony\Component\HttpFoundation\ParameterBag {#46
#parameters: array:2 [
"XSRF-TOKEN" => "eyJpdiI6IkdPR0NtcGNXdEJxKzVwZERheEZSMlE9PSIsInZhbHVlIjoiXC9EbHBHSXM2U0c1TzdjUHhOT25BZ1RQeXdzd3l0WGFwbmNhWWduakJF
RU9ubVBcL3pJdzJMcTI1SCtqQnR4Sk05IiwibWFjIjoiYjk4Mzk3M2ZiOGJlOGZkOGNmYjk1NjBjZGQzNTY3YzIzOWUwNzliNDdjNjNhMzRhODZkOThmZGI2NzU3MDc2OCJ9"
"laravel_session" => "eyJpdiI6IktNaHlnY29BZnI3VUlEcHpnUU1vU2c9PSIsInZhbHVlIjoiUkxWTkVWdHlLcEZGY0FDOXAxMWdaNHROa2szSUY3ZlhWRm94V2o
xZWZSYlc4SDdcL3FSdUlVNGZ0YkFreHl4VHQiLCJtYWMiOiJlOGQ0MjYwZTRiN2ZkOTQwYWRmNTcxNjYyNTY0YmYyZjY5MjBkN2E3ZWMxZGM3YWViYzQ4ODcxYzUyZTg0MTE3In
0="
]
}
+headers: Symfony\Component\HttpFoundation\HeaderBag {#49
#headers: array:12 [
"host" => array:1 [
0 => "127.0.0.1:8000"
]
"connection" => array:1 [
0 => "keep-alive"
]
"content-length" => array:1 [
0 => "15"
]
"accept" => array:1 [
0 => "application/json, text/javascript, */*; q=0.01"
]
"origin" => array:1 [
0 => "http://127.0.0.1:8000"
]
"x-requested-with" => array:1 [
0 => "XMLHttpRequest"
]
"user-agent" => array:1 [
0 => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
]
"content-type" => array:1 [
0 => "text/plain;charset=UTF-8"
]
"referer" => array:1 [
0 => "http://127.0.0.1:8000/user/profile/"
]
"accept-encoding" => array:1 [
0 => "gzip, deflate, br"
]
"accept-language" => array:1 [
0 => "en-US,en;q=0.9,nb;q=0.8"
]
"cookie" => array:1 [
0 => "XSRF-TOKEN=eyJpdiI6IkdPR0NtcGNXdEJxKzVwZERheEZSMlE9PSIsInZhbHVlIjoiXC9EbHBHSXM2U0c1TzdjUHhOT25BZ1RQeXdzd3l0WGFwbmNhWWduak
JFRU9ubVBcL3pJdzJMcTI1SCtqQnR4Sk05IiwibWFjIjoiYjk4Mzk3M2ZiOGJlOGZkOGNmYjk1NjBjZGQzNTY3YzIzOWUwNzliNDdjNjNhMzRhODZkOThmZGI2NzU3MDc2OCJ9;
laravel_session=eyJpdiI6IktNaHlnY29BZnI3VUlEcHpnUU1vU2c9PSIsInZhbHVlIjoiUkxWTkVWdHlLcEZGY0FDOXAxMWdaNHROa2szSUY3ZlhWRm94V2oxZWZSYlc4SD
dcL3FSdUlVNGZ0YkFreHl4VHQiLCJtYWMiOiJlOGQ0MjYwZTRiN2ZkOTQwYWRmNTcxNjYyNTY0YmYyZjY5MjBkN2E3ZWMxZGM3YWViYzQ4ODcxYzUyZTg0MTE3In0%3D"
]
]
#cacheControl: []
}
#content: null
#languages: null
#charsets: null
#encodings: null
#acceptableContentTypes: null
#pathInfo: "/api/deletealiasname"
#requestUri: "/api/deletealiasname"
#baseUrl: ""
#basePath: null
#method: "POST"
#format: null
#session: null
#locale: null
#defaultLocale: "en"
-isHostValid: true
-isForwardedValid: true
basePath: ""
format: "html"
}
Upvotes: 2
Views: 3462
Reputation: 641
I haven't understood why it's happening but found a way to send data through ajax. I simply added a form element and appended my data to FormData and sent it as ajax data.
Form element
<form id="deleteAliasName" class="ui form" action="{{ route('deletealiasname') }}" method="post">
</form>
Ajax
var alias_id = $(this).attr('data-id');
formData = new FormData($('#deleteAliasName')[0]);
formData.append('alias_id', alias_id);
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: "{{ route('deletealiasname') }}",
type: "post",
data: formData,
dataType: "json",
contentType: false,
cache: false,
processData: false,
success: function (response) {
console.log(response);
}
});
Now I receiving the data in controller request
I won't mark it as accepted answer because I think it's a workaround.
Upvotes: 1
Reputation: 1373
i guess the issue is with method:"post"
because it's not method
object, It's actually a type
.
type:"post"
Try this one
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: "{{ route('deletealiasname') }}",
type: "post",
data: {'alias_id': alias_id},
dataType: "json",
contentType: false,
cache: false,
processData: false,
beforeSend : function()
{
console.log(alias_id);
},
success: function (response) {
console.log(response);
}
});
ANd as you said you are using laravel 5.8
. so you can start your dump server in terminal for debug. jsut hit command in terminal php artisan dump-server
and dd(#request)
and see data is coming or not.
am sure its issue is with method:"post"
just change it with type:"post"
Upvotes: 1