Чтение строки дросселирует на 0x1A

У меня была эта проблема в приложении django, с которым я возился (отказ от ответственности: я возился, чтобы учиться, и я никоим образом не специалист). То, что я хотел сделать, это использовать jQuery ajax для отправки запроса DELETE на ресурс, удалить его на стороне сервера, а затем отправить перенаправление обратно (в основном) на главную страницу. Когда я отправил HttpResponseRedirect('/the-redirect/') из скрипта python, метод ajax jQuery получал 200 вместо 302. Таким образом, я сделал, чтобы отправить ответ 300 с помощью:

response = HttpResponse(status='300')
response['Location'] = '/the-redirect/' 
return  response

Затем я отправил / обработал запрос на клиенте с jQuery.ajax, например:

<button onclick="*the-jquery*">Delete</button>

where *the-jquery* =
$.ajax({ 
  type: 'DELETE', 
  url: '/resource-url/', 
  complete: function(jqxhr){ 
    window.location = jqxhr.getResponseHeader('Location'); 
  } 
});

Возможно, использование 300 не является «правильным», но по крайней мере оно работает так, как я этого хотел.

PS: это была огромная боль для редактирования на мобильной версии SO. Глупый интернет-провайдер подал запрос на отмену моего обслуживания, когда я закончил с моим ответом!

13
задан tzot 1 January 2009 в 18:00
поделиться

2 ответа

0x1A является Ctrl-Z, и DOS исторически использовал это в качестве маркера конца файла. Например, попытайтесь использовать командную строку и "введите" луг Ваш файл. Это только отобразит содержание Ctrl-Z.

Python использует функцию Windows CRT _wfopen, который реализует "Ctrl-Z, EOF" семантика.

28
ответ дан 1 December 2019 в 19:15
поделиться

Ned, конечно, корректен.

, Если Ваше любопытство работает немного глубже, первопричиной является назад доведенная до крайности совместимость. Windows совместим с DOS, который использовал Ctrl-Z в качестве дополнительного конца маркера файла для текстовых файлов. То, что Вы не могли бы знать, - то, что DOS был совместим с CP/M, который был популярен на маленьких компьютерах перед ПК. Файловая система CP/M не отслеживала размеры файла вниз к уровню байта, это только отслеживаемый количеством секторов гибкого диска. Если Ваш файл не был точным несколько 128 байтов, Вам был нужен способ отметить конец текста. статья This Wikipedia подразумевает, что выбор Ctrl-Z был основан на еще более старой конвенции, используемой DEC.

9
ответ дан 1 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: