gpt4 book ai didi

javascript - AngularJS POST 空请求?

转载 作者:行者123 更新时间:2023-12-02 14:48:28 25 4
gpt4 key购买 nike

我是 AngularJS 的新手,当我尝试使用 AngularJS 发出 POST 请求并且它没有 POST 任何参数时,我遇到了一个问题。我使用 Sinatra 作为 RESTful 接口(interface)。

这就是我的 Sinatra 后端的样子:

post '/layer/:layer_id' do
@layer = PageLayer.where(id: params[:layer_id]).first
@layer.content = params[:content]
@layer.save
end

如果尝试使用 Postman chrome 扩展程序进行 POST - 它可以工作! Sinatra 正确保存内容。所以我确信后端可以正常工作。

这就是我的 Angular Testing 代码的样子:

TestCtrl = ($scope, $routeParams, $http, $resource) ->
$scope.layer = []

Layer = $resource('/layer/:id', {id:'@id'})

$scope.layer = Layer.get {id: $routeParams.layerId}, ->
console.log "Got you!"

$scope.saveContent = ->
$scope.layer.$save()
console.log "Saved!"

angular.module('appDirectives', []).directive "test", ->
return (scope, element, attrs) ->
element.bind "blur", ->
console.log("blur!")
scope.saveContent()

和 HTML 代码:

<div>Content: {{layer.content}}</div>

<div>
<form>
<input type="text" test ng-model="layer.content">
</form>
</div>

所以,唯一的问题是:出了什么问题?为什么我可以用 Postman 发出正确的请求,但不能用 angularJS 发出正确的请求? Angular 返回空的“内容”,因此 Sinatra 每次都将其保存为“”。

我还附加了一个层的结构:

g {id: 27245, page_id: 2302, external_id: 26518, original_upload: null…}
content: "dfgdfg"
external_id: 26518
id: 27245
layerNumber: 8
page_id: 2302
<小时/>

我如何记录到底是什么 Angular 帖子?

最佳答案

嘿,这正是我遇到的问题,现在答案似乎很明显。我知道 Angular 正在发送 json,但无论我尝试什么,它都不起作用。这引导我走向正确的方向,但至于解析 json,我必须编写

ng_params = JSON.parse(request.body.read)

我必须将“字符串”更改为“读取”。也许我有更新版本的 json gem 之类的。我的完整保存过程是这样的:

post '/api/v1/test' do
ng_params = JSON.parse(request.body.read)
@foo = Foo.new(ng_params)
if @foo.save
puts "Page Saved"
content_type :json
rabl :foos, format: "json"
end
end

我使用 rabl 来格式化 json,以控制 Sinatra 发回的 json 数据(请不要提供电子邮件或密码)

我的 Angular 代码就是这样(尚未实现放置、修补或删除,也尚未实现数据自动更新。您仍然需要刷新页面才能看到新帖子。)需要明确的是,我有一个名为“foos”的表,其中 ActiveRecord 模型为“Foo”,以及一列名为“anything”的列(时间戳和 id 除外,我确保它们始终存在)。

// app declaration
var app = angular.module("App", ['ngResource']);

// data service
app.factory('Foo', ['$resource', function($resource) {
return $resource('/api/v1/test/:id', {id: '@id'});
}]);

// the controller
app.controller('Controller', function($scope, Foo) {

$scope.foos = Foo.query();

$scope.create = function(anything) {
Foo.save({anything: anything}, function(foo){
$scope.foos.push(foo);
});
};
});

然后在我的标记中,表单看起来像这样,其中重要的是调用“create”,并以“anything”作为“ng-submit”中的参数。如果表中有多于一列,则可以使用多个参数调用“create”。 '创建(任何东西,酒吧)'。

<h3>Add something new</h3>
<form ng-submit="create(anything)">
<input ng-model="anything" type="text">
<button type="submit">Do it</button>
</form>

显示数据时

<li ng-repeat="foo in foos">
<p>{{foo.anything}}</p>
</li>

关于javascript - AngularJS POST 空请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com