JSON POST на iOS с помощью Flask - PullRequest
0 голосов
/ 10 марта 2019

Внутри моей веб-программы на flon python я сохраняю несколько параметров в SessionStorage, чтобы отправить их обратно в колбу, а затем сохраняю эту информацию в виде txt-файла.

По какой-то причине все работает безупречно на ПК и Android, не может заставить его работать на устройствах iOS. он распознает и сохраняет элементы sessionStorgae перед отправкой, но впоследствии txt-файл не создается (в конце приложения).

Клиентская часть (HTML):

function func()
{
...
    $.ajax({
    url: "{{ url_for('getInfo', _external=True) }}",
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json;charset=UTF-8',
    success: function (response) {
        console.log(response);
    },
    accepts: {
     json: 'application/json',
    },
    data: JSON.stringify(log)
});
       return;

...
}
 <form id = "myForm" name ="myForm"  method="post" action="{{url_for('final')}}" onsubmit="return func()">

На стороне сервера (Flask):

@app.route("/get_info",methods = ['POST'])
def getInfo():
    list = request.get_json()
    global id
    with open(id + '.txt', 'w+') as outfile:
            json.dump(list,outfile,indent=2)
    return 'OK'

Я не могу найти решение. Также я не могу вспомнить, работал ли он на iOS или нет. пытаясь запустить все виды тестов, как я пишу это. Любая помощь приветствуется. Спасибо.

Если вы считаете, что требуется больше информации, я подробно изложил в комментариях общую структуру этой HTML-страницы и веб-программы.

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Нашел ответ для будущих читателей: iOS помещает запрос ajax в кеш.который позже может дать пустой ответ или вообще не вызывать функцию.Вы можете решить эту проблему, добавив несколько параметров и заголовков в запрос ajax, что предотвратит его:

cache: false,
processData: false,
async: true,
headers: {
    "cache-control": "no-cache"
},
0 голосов
/ 10 марта 2019

Ваш код в режиме 'DEBUG'

@app.route("/get_info",methods = ['POST'])
def getInfo():
    list = request.get_json()
    global id
    file_name = '{}.txt'.format(id)
    print('About to write {} to file {}'.format(str(list),file_name))
    with open(file_name, 'w+') as outfile:
            json.dump(list,outfile,indent=2)
    print('Data was written')
    return 'OK'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...