嗨,我
正在构建一个应用程序 laravel 5.2,我有一个问题,问题是我只保存 JSON 中的数据,而不是您在底部看到的标头信息。我想知道我做错了什么。谢谢
视野中的阿贾克斯
$.ajax({
url: 'http://{!! $_SERVER['SERVER_NAME'] !!}/settings/languages_available/{!!$lang->id!!}/update_target',
type: "put",
data: {"target":""+JSON.stringify(data_rate)+""},
success: function(data){
console.log(data);
}
});
控制器中的功能
public function updateTargetLanguages(Request $request, $id)
{
$LA = LanguageAvailable::find($id);
$LA->target_languages = response()->json($request);
$LA->save();
}
在数据库中以这种方式存储:
HTTP/1.0 200 OK
Cache-Control: no-cache
Content-Type: application/json
{"target":"[{'"title'":'"Brazilian Portuguese'",'"rate'":'"0.04'"},{'"title'":'"Belarusian'",'"rate'":'"0.06'"},{'"title'":'"Canadian French'",'"rate'":'"0.06'"}]"}
那是因为您设置了整个请求。试试这个:
$LA->target_languages = $request->input();
你不需要使用方法作为"放置"。如果您想使用基于laravel的路由,请将方法设置为post,并添加一个带有数据的元素作为"_method"键。查看示例
$.ajax({
url: 'http://{!! $_SERVER['SERVER_NAME'] !!}/settings/languages_available/{!!$lang->id!!}/update_target',
method: "POST",
data: {"_method":"PUT", "target":""+JSON.stringify(data_rate)+""},
success: function(data){
console.log(data);
}
});
在路由中使用此过程或类似的东西
Route::put('your/route', 'YourController@updateTargetLanguages');
谢谢:)