Reputation: 86
view
==========
$('#searchstudent').on('click',function(){
event.preventDefault();
var formdata = $('#searchform').serialize();
console.log(formdata);
$.ajax({
url:'/test',
type:'post',
dataType:'json',
data : formdata ,
success : function(data){
console.log('hey'+data);
}
});
});
route
Route::post('/test', ['as'=>'test','uses'=>'HomeController@test']);
controller
use Illuminate\Http\Response;
public function test(Request $request){
return response()->json(['name' => 'praveen', 'country' => 'SL']);
}
Issues I Face
1)Currently i am in this url
http://localhost/blog/allocatestudent/1
from this url only my view is rendered and from here i am calling above mentioned ajax function
Error message i got from console
POST http://localhost/test 404 (Not Found)
What i tried to change the url in ajax function like below
url:'test' instead of url:'/test'
and in my route
Route::post('test', ['as'=>'test','uses'=>'HomeController@test']);
so i am getting another error message as
POST http://localhost/blog/allocatestudent/test 405 (Method Not Allowed)
Anybody can tell me where i am doing wrong?...
Upvotes: 0
Views: 4668
Reputation: 7289
When you specify the AJAX URL with an leading slash (like /test
), it will handle the request as absolute path (like yourdomain.com/test
), in your case localhost/test
.
Change the URL to the whole absolute path, but without your domain:
/blog/allocatestudent/test
AJAX will interpret it as localhost/blog/allocatestudent/test
The best (durable and DRY) solution would be to create a function that returns the url with the fixed path before.
var BASE_URL = '/blog';
function getUrl(url) {
return BASE_URL.concat(url);
}
console.log(getUrl("/allocatestudent/test")); //returns "/blogallocatestudent/test
Upvotes: 2