2014-05-08 32 views
0

我有一个运行在Sencha Touch上的应用程序。它使用表单中的一些数据向Django服务器发出POST请求。这包含文本框和图像文件。带有错误回调函数的Ajax响应

显然,一切都很顺利。该应用程序能够正确地将数据发送到服务器,该服务器能够接收数据并对其进行充分处理(包括图像文件),并以状态200回答该数据。客户机甚至可以接收到该状态200.但是,回调函数在sencha触摸应用程序中称为失败者,不成功。

这是客户端接收响应报头:

HTTP/1.0 200 OK 
Date: Thu, 08 May 2014 20:59:29 GMT 
Server: WSGIServer/0.1 Python/2.7.6 
Vary: Cookie 
X-Frame-Options: SAMEORIGIN 
Content-Type: text/html; charset=utf-8 
Access-Control-Allow-Origin: * 

我做的POST使用此:

values = form.getValues(); 
var request = { 
    url: 'http://127.0.0.1:8000/profiles/create/', 
    method: 'POST', 
    success: function(conn, response, options, eOpts) { 
     Ext.Msg.alert('Success!', 'We are happy!.'); 
    }, 
    failure: function(conn, response, options, eOpts) { 
     Ext.Msg.alert('Error: status code ', response.status); 

    }, 
    disableCaching: true, 
    xhr2: true, 
    progress: progressIndicator 
} 
form.submit(request) 

如何知道我在做什么错?

+0

什么是 “response.status” 的价值? – lalo

+0

@lalo它是200. –

+0

向我们显示您的回应。也许你从服务器没有发送'成功:真'。你的回应是json吗? –

回答

1

sencha docs about form.submit

成功:功能

,将成功响应后调用回调。如果从服务器接收到响应,并且 是success属性设置为true的JSON对象,则返回 响应成功, {“success”:true}。

所以你的反应应该是一个有效的JSON和包含success:true这样的:

{success: true, data: 'mydata'} 
+0

你懂了! 我改变了我的回报来自 返回的HttpResponse(状态= 200) 到 返回的HttpResponse(json.dumps({ '成功':真, '数据': ''}),状态= 200) –