Drupal的:如何从REST服务使用AJAX POST提交webfrom(Drupal: How

2019-10-21 06:45发布

我有在Drupal Web表单模块。 我想提交表单到Web窗体从外部应用程序使用了AJAX POST方法REST服务。 我可以能够使用AJAX检索web表单(节点/ 1)。 在提交它不应该创建新的节点,而是将获得加入到Web表单。

在此先感谢您的帮助.....

Answer 1:

为了能够检索数据并将数据发送到网络表单模块与外部应用程序,我建议你使用表格服务的Drupal模块,使可用于您的调查REST API。

一旦你安装和配置的模块和它的依赖(如果有的话),你就可以检索调查的序列化数据。 您也可以通过适当的请求与适当的HTTP方法端点发送提交(GET,POST等)。 查看端点描述表格服务的页面模块。

你需要知道你要提交的数据格式。 在此 ,你会发现JSON对象的正确的格式。 所述的值values密钥是一个数组要么它有一个或多个值,所以大部分的时间,它看起来像这样:

{'values':{0:"put your value here"}}

在多个值(复选框,多选择)的情况下,可以使用values是这样的:

{'values':{
    0:"put your value1 here",
    1: "put your value2 here",
}}

最后,这里是HTML和AngularJS的片段准备和张贴到REST API的请求。

HTML

<form ng-submit="submit('put the UUID of the survey here')" ng-controller="formCtrl">
  <label>Your name:</label><br/>
  <input type="text" ng-model="formData[1]['values'][0]" /><br/>
  <label>I like tea</label><br/>
  <input type="checkbox" ng-model="formData[2]['values'][0]" value="tea" /><br/>
  <label>I like coffee</label><br/>
  <input type="checkbox" ng-model="formData[2]['values'][1]" value="coffee" /><br/>
  <input type="submit" value="Send" />
</form>

请注意,您不需要编写静态HTML的形式,但你可以检索来自API的调查数据,并通过脚本建的形式。

JavaScript的

var app = angular.module('webformApp', []);

app.config(['$httpProvider', function($httpProvider) {
        $httpProvider.defaults.useXDomain = true;
        delete $httpProvider.defaults.headers.common['X-Requested-With'];
    }
]);

app.controller('formCtrl', function($scope, $element, formService) {
    $scope.submit = function(uuid){
      formService.postForm(uuid, this);
    };
});

app.service('formService', function($http){
    return {
        postForm: function(uuid, $scope){
          var toPost = {
            webform: uuid,
            submission: {
                data: $scope.formData
            }
          };
          console.log(toPost);
          console.log(JSON.stringify(toPost));
          return $http.post('http://example.com/yourendpoint/submission', toPost);
        }
    };
});

要尝试/测试API本身就可以使用Chrome浏览器的邮差扩展。 这JS将JSON字符串登录到控制台将其发送到API。

玩得开心!



文章来源: Drupal: How to submit the webfrom from REST services using AJAX POST