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)
任何人都可以告诉我我做错了什么?...
答案 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