在laravel中呼叫ajax路线

时间:2017-03-26 03:34:16

标签: php jquery ajax laravel-5

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::post('/test', ['as'=>'test','uses'=>'HomeController@test']);

控制器

use Illuminate\Http\Response;

public function test(Request $request){
    return response()->json(['name' => 'praveen', 'country' => 'SL']);
 }

我面临的问题

1)目前我在这个网址

http://localhost/blog/allocatestudent/1

从这个网址只显示我的视图,从这里我调用上面提到的ajax函数

我从控制台获得的错误消息

POST http://localhost/test 404 (Not Found) 

我试图改变ajax函数中的url,如下所示

url:'test' instead of url:'/test'

和我的路线

Route::post('test', ['as'=>'test','uses'=>'HomeController@test']);

所以我收到另一条错误消息

POST http://localhost/blog/allocatestudent/test 405 (Method Not Allowed) 

任何人都可以告诉我我做错了什么?...

1 个答案:

答案 0 :(得分:2)

当您使用前导斜杠(如/test)指定AJAX网址时,它会将您的请求作为绝对路径处理(如yourdomain.com/test),在您的情况下为localhost/test

将网址更改为整个绝对路径,但不包含您的网址: /blog/allocatestudent/test

AJAX会将其解释为localhost/blog/allocatestudent/test

最好的(持久和App Installer page)解决方案是创建一个函数,该函数返回之前具有固定路径的url。

var BASE_URL = '/blog';

function getUrl(url) {
    return BASE_URL.concat(url);
}

console.log(getUrl("/allocatestudent/test")); //returns "/blogallocatestudent/test