从POST返回数据

时间:2017-05-23 03:46:43

标签: javascript jquery flask

我正在运行Flask服务器。 JS文件通过POST请求将数据发送到服务器。这是服务器代码:

@app.route('/approve', methods=['POST'])
def approve():
    try:
        assignmentId = request.form['assignmentId']
        response = client.approve_assignment(
            AssignmentId=assignmentId
        )
        return make_response(jsonify(response), response['ResponseMetadata']['HTTPStatusCode'])
    except ClientError as e:
        return make_response(jsonify(e.response), e.response['ResponseMetadata']['HTTPStatusCode'])

在JS中,我希望有一个警报来通知行动是否成功;如果失败那么具体的错误是什么。但是,返回的数据为空,我无法检查它以通知用户特定错误。

  $.post("http://cronus.eecs.northwestern.edu/mturk/approve", 
          {assignmentId: assignmentId,
            OverrideRejection: false}, 
          function(data, status) {
            console.log(data);
            console.log(status);
            if (status == 200) {
              alert("Approved successfully");
            } else {
              alert("Error");
            }
          });

我该如何解决这个问题?数据是否为null因为我没有在Flask代码中使用正确的响应对象?

2 个答案:

答案 0 :(得分:1)

您应该使用.fail

$.post( "example.php", function() {
   alert( "success" );
   })
  .done(function() {
    alert( "second success" );
  })
  .fail(function(error) {
    alert( `error ${error}` );
  })
  .always(function() {
    alert( "finished" );
  });

答案 1 :(得分:1)

I hope this can help you.

var request = $.ajax({
  url: url,
  method: 'post',
  data: {...},
});

request.done(function(message) {
  alert(message);
});

request.fail(function(error) {
  alert(error);
});