没有正确保存 AJAX 发送到 laravel 控制器的 JSON 数据


No saved correctly JSON data sent by AJAX to laravel controller

嗨,我

正在构建一个应用程序 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'); 

谢谢:)