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

how to use jsonp with jsonify in python and catch the return of the ajax

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

P.S:我正在使用 python 和来自 flask

的 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'})

发送到错误函数的return(状态为200):

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

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

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

在此处阅读有关 JSONP 的更多信息:https://en.wikipedia.org/wiki/JSONP