如何在python中使用jsonp和jsonify并捕获ajax的返回

时间:2018-06-13 18:44:26

标签: python ajax flask jsonp

我想使用jsonp调用带有ajax的函数(因为我调用url的服务器与发送ajax的服务器不同)。 ajax调用python函数删除一些目录,然后返回一些东西(返回对我来说并不重要)。当它返回时,它不会在success函数中返回(它返回错误函数)。我做错了什么?

P.S:我正在使用python和烧瓶中的jsonify

AJAX:

$.ajax({
    url: 'http://serverPath:1234/deleteDir?path='+ id,
    type: 'GET',
    dataType: 'jsonp',
    success: function (data) { console.log(data);},//console.log(data); },
    error: function (data) { console.log(data); },
});

服务器上的PYTHON功能:

@app.route("/deleteDir", methods=['POST', 'GET'])

def deleteDir():
   path =request.args.get('path') 
   pathAdequacao = 'reports/'+path+'/adequacao'
   pathBrain = 'reports/'+path+'/brain'

   try:

      shutil.rmtree(pathAdequacao, ignore_errors=True)
   except:
      pass

   try:
      shutil.rmtree(pathBrain, ignore_errors=True)
   except: 
      pass  

   return jsonify({'response':'ok'})

发送到错误功能的返回(状态为200):

{readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}

1 个答案:

答案 0 :(得分:0)

您正在使用JSONP,因此您必须将JSONP填充添加到结果中:

return '{funcname}({data})'.format(
    funcname=request.args.get('callback'),
    data=jsonify({'response':'ok'}),
)

在此处详细了解JSONP:https://en.wikipedia.org/wiki/JSONP