Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django development server not handling ajax request

Tags:

django

I am making a simple ajax request but for some reason request.is_ajax return false. I am using jquery and Django development server.

    $('#save').click(
function()
{
    $.ajax({
    type: "POST",
    url: "/order/start",

    });

});

And in views.py

if request.POST and 'save' in request.POST :
    if request.is_ajax()== True:

But, it does not return true, and on runserver i see errors

Exception happened during processing of request from ('127.0.0.1', 1625)
Traceback (most recent call last):

  File "c:\python27\lib\SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "c:\python27\lib\SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "c:\python27\lib\SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "c:\python27\lib\site-packages\django\core\servers\basehttp.py", line 56
, in __init__
    BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
  File "c:\python27\lib\SocketServer.py", line 641, in __init__
    self.finish()
  File "c:\python27\lib\SocketServer.py", line 694, in finish
    self.wfile.flush()
  File "c:\python27\lib\socket.py", line 301, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 10053] An established connection was aborted by the software in y
ur host machine
like image 888
ruskin Avatar asked Feb 04 '11 08:02

ruskin


1 Answers

I guess that you have the standard middleware enabled and settings.APPEND_SLASH is True (the default), which means that POSTing to "/order/start" automatically redirects to "/order/start/" with a slash, losing the POST in the process.

Make sure the URL in your JS ends with a slash.

like image 111
Daniel Roseman Avatar answered Nov 02 '22 23:11

Daniel Roseman