0

私はjquery ajaxリクエストを持っています:

  var settingsContainer = {};
  settingsContainer.font_family = $j("#supercontainer").css("font-family");


  var settingsContainerJson = JSON.stringify(settingsContainer);

  var BASE = "<?php echo Request::Root(); ?>/";
  return $j.ajax
  ({
  type: 'PUT',
  dataType: 'JSON',
  data: { settingsContainer: settingsContainerJson },
  url: BASE+'pages/update/{{ $page_id }}',
  success: function(data)
  { 
    alert(data);
  }
  });

これは私のルーティングに行きます:

Route::put("/pages/update/{id}", array('as'=>'ajax', 'uses'=>'PageController@putSave'));

そして、それは私のコントローラーに行きます:

public function putSave($id) {
    $a = json_decode(Input::get('settingsContainer'));
    return $a['font_family'];
}

これは現在、Laravel 4 では何も返されません。jquery 呼び出しで dataType: json を削除すると、何かが返されるため、JSON データ処理が何らかの形で壊れているようです。提案?ありがとう!

4

1 に答える 1

0

リクエストメソッドとして使用PUTしているが、リクエストに使用し、非表示フィールドを次のように送信してリクエストを模倣しているためだと思います。ajaxLaravelPOSTPUTPUT

<input type="hidden" name="_method" value="PUT" />

Form::open()これは、フォーム内のメソッドによって自動的に生成/追加されます。 ajaxandを使用しているため、配列内で使用可能になり、(PUT 要求として) 作業を実行できるように、内にjson追加してtoを変更する必要があります。したがって、次のようになります。_method:'PUT'datatype:'PUT'type:'POST'$_POSTLaraveldata

{
    type: 'POST',
    dataType: 'JSON',
    data: { settingsContainer:settingsContainerJson, _method:'PUT' },
    // ...
}

また、PUT、DELETE などのメソッドとブラウザのサポートについては、このスレッドを確認してください。

于 2014-03-01T22:23:46.480 に答える