问题
您好,很久以前我在angularjs中使用方法PUT时遇到500内部服务器错误(我正在尝试更新列表名称),但仍然不知道如何修复它并使更新正常工作。目前我手动设置值进行更新。我收到了这个错误,但是当我刷新页面时,列表名称会更改为该值。好像有角度不能正常工作,放完后,它不会给.success
,而是给我.error
,因为我无法使用我的GET方法。
所以此刻我可以设置列表名称,例如“Grocery List”,点击按钮编辑,按Enter键(因为我手动设置了新的列表名称值)并得到错误。页面刷新后,我将获得相同的“Grocery List”,但新名称为“Test”。我需要单页面应用程序,所以我不能使用刷新,但PUT方法后的GET方法不起作用。任何想法如何使其工作?请帮帮我!
错误
当我更改列表名称并在控制台中输入时显示错误
PUT http://localhost/anydo/anydocopy/anydocopy/public/lists/1 500 (Internal Server Error)
。我在Google Chrome浏览器中检查了网络 - >预览,并显示UnexpectedValueException in Response.php line 403:
The Response content must be a string or object implementing __toString(), "boolean" given.
。所以有人知道哪里有问题?
CODE
routes.php文件
Route::group(['middleware' => 'cors'], function () {
Route::get('tasks', 'TasksController@index');
Route::get('lists', 'ListsController@index');
Route::get('lists/{id}', 'ListsController@show');
Route::post('lists', 'ListsController@store');
Route::put('lists/{id}', 'ListsController@update');
Route::post('lists/{id}', 'TasksController@store');
Route::delete('lists/{id}', 'ListsController@delete');
});
midleware cors.php
class Cors
{
public function handle($request, Closure $next)
{
$response = $next($request);
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set(
'Access-Control-Allow-Headers',
'Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, x-xsrf-token, X-Requested-With'
);
$response->headers->set('Access-Control-Allow-Credentials', 'true');
$response->headers->set('Access-Control-Allow-Methods', '*');
return $response;
}
}
控制器
public function update($id, CreateListsRequest $request)
{
$response = Lists::findorfail($id)->update($request->all());
return Response($response, 201);
}
角
$scope.updatel = function($event){
console.log($event.keyCode);
console.log($scope.editlist);
if ($event.keyCode == 13) {
var list = {
name: 'Test'
};
$http({
method: 'PUT',
url: 'http://localhost/anydo/anydocopy/anydocopy/public/lists/1',
data: list
})
.success(function () {
console.log('true');
$http({
method: 'GET',
url: 'http://localhost/anydo/anydocopy/anydocopy/public/lists'
})
.success(function (d) {
console.log(d);
$scope.listsdata = d;
});
})
.error(function () {
console.log(list);
console.log('false');
});
HTML
<div ng-repeat="lists in listsdata.lists">
<div id="DIV_24" close-on-outside-click="div.popup_information">
<button ng-click="lists.show = !lists.show" id="MORE_BUTTON">:</button>
<div class="popup_information" ng-show="lists.show">
<button id="DELETE_BUTTON" ng-click="del_list(lists)">X</button>
<button id="EDIT_BUTTON" ng-click="edbut.show = !edbut.show">E</button>
</div>
<input type="text" id="edit" ng-model="editlist" ng-show="edbut.show" ng-keydown="updatel($event)" onkeydown="hideshow(document.getElementById('edit'))" class="form-control" style="font:24px bold;" value="{{lists.name}}" />
<a href="#/{{lists.id}}">
<div id="DIV_25">
<label class="test" style="font-weight: normal" ng-show="!edbut.show" close-on-outside-click="test">{{lists.name}} </label>
</div>
<div id="DIV_26">
</div>
</a>
</div>
</div>
我知道代码太多了,但是我不明白如何修复这个错误以及我错误的地方,所以我只给你所有我正在使用的代码。如果需要任何其他代码,请在评论中提问。
我试图做什么
我只需将.success
更改为.error
,将.error
更改为.success
,现在所有工作都必须如此,但我仍然会遇到同样的错误。当我得到GET
时,角度工作中的.error
方法,出现了什么问题。 Mby有人可以帮助我并解决为什么我在PUT
方法后出错。
RESPONSE.PHP
此功能在403行。
public function setContent($content)
{
if (null !== $content && !is_string($content) && !is_numeric($content) && !is_callable(array($content, '__toString'))) {
throw new \UnexpectedValueException(sprintf('The Response content must be a string or object implementing __toString(), "%s" given.', gettype($content)));
}
$this->content = (string) $content;
return $this;
}