【问题标题】:How to get value of FormData that is passed from Angular in Laravel 4?如何获取从 Laravel 4 中的 Angular 传递的 FormData 的值?
【发布时间】:2013-12-18 02:06:28
【问题描述】:

我正在使用 Angular 上传图像(以及同时的其他数据),并使用 Angular 服务传递给 Laravel 的路由,所有这些都使用 javascript 中的 FormData 函数。这是我的上传代码(在coffeescript中):

            tag = null
            if $('span.tag').length > 0
                tag = $('span.tag').map(->
                    $.trim @innerHTML
                ).get().join(",")

            fd = new FormData()
            fd.append "title", $scope.title
            fd.append "subtitle", $scope.subtitle
            fd.append "date", $scope.date
            fd.append "time", $scope.time
            fd.append "category", $scope.category
            fd.append "content", $scope.content
            fd.append "tag", $scope.tag
            fd.append "caption", $scope.caption
            fd.append "active", !$scope.active

            if $scope.file
                fd.append "image", $scope.file

            alert fd

            UploadService.news.save fd
            , ( (response) ->
                alert response.data
            )

而我的UploadService就是这个,指向Laravel的路线:

app.factory "UploadService", ["$resource", ($resource) ->
    news: $resource("upload/news")
    member: $resource("404/upload/member")
]

我的问题是我无法读取从FormData 传递到 Laravel 的数据,即使这样:

return Response::json(['data' => $_POST['title']]);

return Response::json(['data' => Input::get['title']]);

将返回undefined index 'title',我的代码的哪一部分是错误的?感谢您的帮助。

【问题讨论】:

  • 您是否尝试过通过以下方式转储所有输入数据:dd(Input::all());我注意到你在你的问题中使用了 Input::get['title'],这无论如何都行不通

标签: javascript php angularjs coffeescript laravel-4


【解决方案1】:

这是我刚刚为检查 FormData 是否有效所做的测试:

Route::post('test', function() {

    Log::info(Input::all());

    return Response::json(['data' => Input::all()]);

});

然后跟踪日志:

php artisan tail

你应该得到类似的东西:

[2014-04-04 20:10:19] server.INFO: {"_token":"MIFCleetMa029UGpUcvXUhawmVdJyl65zYBmXDHM","id":"1""first_name":"Antonio Carlos","last_name":"Ribeiro"}

这是我的(原版)Javascript 代码,应该也可以在 Angular 应用程序中工作。

var form = document.getElementById('form1');
var formData = new FormData(form);

var xhr = new XMLHttpRequest();

xhr.open('POST', 'http://development.consultoriodigital.net/test', true);

xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        console.log(xhr.responseText);
    }
}

xhr.send(formData);

您还必须在控制台中取回表单。

form1 表单可以包含任意数量的表单输入,没关系。

关于这一行的注释:

return Response::json(['data' => Input::get['title']]);

应该是

return Response::json(['data' => Input::get('title')]);

【讨论】:

    猜你喜欢
    • 2019-12-21
    • 2016-06-27
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2021-04-08
    • 2018-02-26
    相关资源
    最近更新 更多