【问题标题】:Passing GET response to POST将 GET 响应传递给 POST
【发布时间】:2014-11-28 13:56:56
【问题描述】:

我正在尝试将多个依赖于所选 id 的数据映射传递给导出到 Excel 方法。

我正在尝试使用 AngularJS 使用以下代码将 JSON 数组从 GET 响应传递到 POST:

$scope.exportExcel = function() {
var id='?';
angular.forEach($scope.selection, function(value, key) {
    id = id + "id=" + value + '&';
});

$http.get(searchUrl + id).success(
    function(response) { 
        $http.post(exportUrl, response);
    }
)}

GET 的响应将是一个 JSON 数组,看起来像这样(假设 Jason 和 Fred 都被选中):

response = [{'id':'Jason', 'number':1}, {'id':'Fred', 'number':2}]

我已经开发了 Java 代码,使得 POST 方法的输入应该像上面的数组。

我希望用户选择 id,按下 EXPORT 按钮,然后立即获得下载对话框。没有其他屏幕更改或加载。

这可行吗?我的 POST 命令能否接收到来自 GET 的 JSONArray 响应并成功导出?

【问题讨论】:

    标签: javascript json angularjs post get


    【解决方案1】:

    没有理由这不起作用。一旦GET 操作完成并调用它的on-success 函数,您的代码就在一个全新的域中,POST 操作将正常运行(它不关心也不知道数据来自哪里)。

    【讨论】:

      【解决方案2】:

      只是一个快速的尝试;试试这个(如果你不能使用这个,我需要更多关于值是什么样子的信息——我不知道你正在使用的库):

      $scope.exportExcel = function() {
      var id;
      angular.forEach($scope.selection, function(value, key) {
          id = (id?id+"&":"?")
             + "id["+key+"]=" + encodeURIComponent(value.id)
             + "&number["+key+"]=" + value.number;
      });
      
      $http.get(searchUrl + id).success(
          function(response) { 
              $http.post(exportUrl, response);
          }
      )}
      

      【讨论】:

        【解决方案3】:

        是的,它有效。毕竟我只需要肯定。我测试了它并且它有效。感谢那些回答的人。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-10
          • 2018-11-25
          • 2011-12-15
          • 1970-01-01
          相关资源
          最近更新 更多