【问题标题】:Submitting post information from AngularJS to Laravel REST API从 AngularJS 提交帖子信息到 Laravel REST API
【发布时间】:2015-01-16 05:30:51
【问题描述】:

我按照以下教程 (https://code.tutsplus.com/tutorials/laravel-4-a-start-at-a-restful-api-updated--net-29785) 使用 Laravel 创建了一个 REST API。在这里,我们创建了一个新的 Url,它获取两个输入:一个 url 和描述,并将其存储到数据库中。

public function store()
{
    $url = new Url;
    $url->url = Request::get('url');
    $url->description = Request::get('description');
    $url->user_id = Auth::user()->id;

    $url->save();

    return Response::json(array(
        'error' => false,
        'urls' => $urls->toArray()),
        200
    );
}

在尝试自学 AngularJS 时,我一直在尝试将这个 REST API 与 AngularJS 前端连接起来。这是我的表格:

<form data-ng-controller="formController">
    <p>Store a URL To Read Later:</p>
    <div class="form-group">
        <input class="form-control" type="text" placeholder="Enter URL here" data-ng-   model="newurl" />
    </div>

    <p>Description:</p>
    <div class="form-group">
        <input class="form-control" type="text" placeholder="Enter a brief description" data-ng-model="newdescription" />
    </div>

    <div class="form-group text-right">
    <button class="btn btn-success" data-ng-click="submitUrl()">Add To List</button>
    </div>
</form>

data-ng-click 正在调用我在 FormController 中定义的 submitUrl 函数。

function formController($scope, $http) {
    $scope.submitUrl = function() {
        var data = { 'url': $scope.newurl, 'description': $scope.newdescription };
        $http.post("http://readitlater.loc/api/v1/url/", data )
    }
}

我想我对如何将输入数据获取到公共函数 store() 以及它期望什么样的数据感到困惑。感谢您的宝贵时间。

【问题讨论】:

    标签: angularjs rest laravel


    【解决方案1】:

    我想通了。这样重写,问题解决了。

     function formController($scope, $http) {
        $scope.submitUrl = function() {
            var data = { 'url': $scope.newurl, 'description': $scope.newdescription };
            $http({
                method: 'POST',
                url: 'http://readitlater.loc/api/v1/url/',
                headers: { 'Content-Type' : 'application/x-www-form-urlencoded'},
    
                data: $.param(data)
            });
    

    【讨论】:

    • 我也做了同样的事情,但是得到了 Referenceerror: $ is not defined,有什么线索吗?
    • @Haseeb $.paramjQuery 的函数。您需要在应用程序中包含一个 jQuery 库。
    【解决方案2】:

    AngularJS 默认发送带有 application/json 类型和 JSON 正文的 POST 请求。我不熟悉 Laravel,但看起来你需要使用 Input 而不是 Requesthttp://laravel.com/docs/4.2/requests#basic-input

    【讨论】:

      猜你喜欢
      • 2014-02-16
      • 2015-05-11
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2023-03-29
      • 2015-11-30
      • 2017-09-13
      相关资源
      最近更新 更多