Dalam projek baru-baru ini, data json yang dikembalikan dengan memuat naik fail akan digesa untuk memuat turun Masalah ini hanya berlaku dalam IE10. Bahagian hadapan menggunakan ajaxForm pemalam jQuery untuk menyerahkan borang, dan format data yang dikembalikan oleh latar belakang ialah json. Kodnya adalah seperti berikut:
def jsonp(func):
"""Membungkus output JSONified untuk permintaan JSONP."""
@wraps(func)
def decorated_function(*args, **kwargs):
panggil balik = request.args.get('callback', False)
Temp_content = func(*args, **kwargs)
jika isinstance(temp_content, dict):
temp_content.setdefault('berjaya', Benar)
temp_content.setdefault('code', 200)
cuba:
temp_content = json.dumps(temp_content, indent=4)
kecuali UnicodeDecodeError:
cuba:
temp_content = ujson.dumps(temp_content)
kecuali StandardError sebagai e:
Logger.exception(e)
temp_content = json.dumps({'success': False, 'code': 500, 'info': 'INVALID_CONTENT'})
temp_content = cgi.escape(temp_content)
jika panggil balik:
# Berdasarkan
http://evilcos.me/?p=425, jsonp menambah /**/Kepala akan lebih selamat
kandungan = '/**/' str(panggilan balik) '(' temp_content ')'
mimetype = 'application/javascript'
pengepala = {'charset':'utf-8'}
kembalikan current_app.response_class(content, mimetype=mimetype, headers=headers)
lain:
mimetype = 'application/json'
pengepala = {'charset':'utf-8'}
kandungan = temp_content
kembalikan current_app.response_class(content, mimetype=mimetype, headers=headers)
elif isinstance(temp_content, basestring):
temp_content = cgi.escape(temp_content)
kembalikan temp_content
lain:
kembalikan temp_content
Kembalikan fungsi_hiasan
@mod.route('/patch/install.json', method=['POST'])
@jsonp
def patch_install():
Kembalikan {'data': 'data'}
Nota: Bahagian belakang contoh ini menggunakan Python Jika anda menghadapi masalah yang sama dalam projek, tukarkannya kepada bahasa yang sepadan
Untuk meringkaskan, sebenarnya, untuk menyelesaikan masalah ini, cukup letakkan dalam satu ayat: "Tukar format data yang dikembalikan oleh bahagian belakang kepada format teks/html"