没有正确保存AJAX发送到laravel控制器

时间:2016-02-23 11:07:37

标签: php jquery ajax laravel laravel-5

您好我正在构建一个应用程序laravel 5.2,我遇到了问题,问题是我只保存JSON中的数据,而不是您在底部看到的标题信息。我不知道我做错了什么。感谢

视图中的Ajax

$.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\"}]"}

2 个答案:

答案 0 :(得分:0)

那是因为您设置了整个请求。试试这个:

$LA->target_languages = $request->input();

答案 1 :(得分:0)

您无需使用方法' put'。如果你想使用基于laravel put的路线,请将方法设置为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'); 

谢谢:)