在angularjs

时间:2015-10-02 10:28:17

标签: angularjs http laravel-5

问题

您好,很久以前我在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;
    }

0 个答案:

没有答案