Ошибка: Сломанная труба

Я работаю над проектом Django. Все прошло хорошо, пока я не создал запрос Ajax для отправки значений со страницы html на бэкэнд (views.py).

Когда я отправляю данные с помощью Ajax, я могу просматривать значения, передаваемые view.py, и даже достигает метода render_to_response и отображает мою страницу, но выдает ошибку разбитого трубопровода в терминале. Я не вижу каких-либо сбоев в программе, но я хотел знать, есть ли способ предотвратить эту ошибку. Я проверил другие ответы. Но пока не повезло.

Когда я попытаюсь нажать отправить снова на обновленной странице, я получаю это сообщение:

Страница, на которую вы ищете информацию, которую вы ввели. Возврат на эту страницу может привести к повторению любого действия, которое вы приняли. Вы хотите продолжить? [Отправить] [Отменить] `

Вот свалка:

Traceback (most recent call last): ---------------------------------------- Exception happened during processing of request from ('127.0.0.1', 34812) ---------------------------------------- File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 284, in run self.finish_response() File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 324, in finish_response self.write(data) File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 403, in write self.send_headers() File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 467, in send_headers self.send_preamble() File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 385, in send_preamble 'Date: %s\r\n' % http_date() File "/usr/lib/python2.7/socket.py", line 324, in write self.flush() File "/usr/lib/python2.7/socket.py", line 303, in flush self._sock.sendall(view[write_offset:write_offset+buffer_size]) error: [Errno 32] Broken pipe Traceback (most recent call last): File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock self.process_request(request, client_address) File "/usr/lib/python2.7/SocketServer.py", line 310, in process_request self.finish_request(request, client_address) File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 570, in __init__ BaseHTTPRequestHandler.__init__(self, *args, **kwargs) File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__ self.finish() File "/usr/lib/python2.7/SocketServer.py", line 693, in finish self.wfile.flush() File "/usr/lib/python2.7/socket.py", line 303, in flush self._sock.sendall(view[write_offset:write_offset+buffer_size]) error: [Errno 32] Broken pipe 

Обновление: вот код, который я отправляю:

  $( document ).ready(function() { $.csrftoken(); $("#submitdata").click(function(){ //values = [tmode, fmode, t_cool, t_heat, hold]; values = { "tmode": tmode, "fmode": fmode, "t_cool": t_cool, "t_heat": t_heat, "hold": hold }; var jsonText = JSON.stringify(values); $.ajax({ url: "/submitdata/", type: 'POST', data: jsonText, dataType: 'json', success:function(data){ console.log(data.success); }, complete:function(){ console.log('complete'); }, error:function (xhr, textStatus, thrownError){ console.log(thrownError); console.log(obj); } }); }); }); 

И вот мои view.py:

 @login_required def submitvalues(request): #context = RequestContext(request) if request.POST: jsonvalues = json.loads(request.raw_post_data) print jsonvalues return HttpResponse(json.dumps(dict(status='updated')), mimetype="application/json") 

Я все еще сталкиваюсь с той же проблемой. Может кто-то помочь мне с этим?

Редактировать 28.08.2014: Я только что выяснил причину неисправной трубы. Это произошло потому, что я не отправлял ответ от Python и просто ожидал, что страница будет обновляться автоматически. Я новичок во всем этом, и мне потребовалось некоторое время, чтобы понять, почему это произошло.

2 Solutions collect form web for “Ошибка: Сломанная труба”

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

Я решил эту проблему, добавив следующее:

 self.send_header("Access-Control-Allow-Origin", "*") 

Потому что я обнаружил ошибку при отправке страницы с сообщением:

 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is there 

Затем я получил это решение и решил проблему выше.

  • django.db.utils.OperationalError: не удалось подключиться к серверу: нет такого файла или каталога
  • TypeError: super (type, obj) при запуске скрипта pyprocessing в интерактивном режиме
  • Python 2.7 Преобразование Bitcoin Privkey в WIF Privkey
  • Разница во времени в Python 2.7
  • Python + OpenCV: cv2.imwrite
  • Импорт Python очень медленный - Anaconda python 2.7
  • Элементы элементов модуля импорта Scrapy
  • Установка scipy для python 2.7
  • Сравнение строк в 2 текстовых файлах с различным количеством столбцов
  • отправлять почту с помощью python
  • Использование Python 2.x и Python 3.x в IPython Notebook
  • Python - лучший язык программирования в мире.