Croos Praveen
Croos Praveen

Reputation: 86

calling ajax route in laravel

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

Answers (1)

TheAlexLichter
TheAlexLichter

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

Related Questions