带有错误回调函数的 Ajax 响应

Posted

技术标签:

【中文标题】带有错误回调函数的 Ajax 响应【英文标题】:Ajax response with wrong callback function 【发布时间】:2014-05-08 21:11:23 【问题描述】:

我有一个在 Sencha Touch 上运行的应用程序。它使用表单中的一些数据向 Django 服务器发出 POST 请求。这包含文本字段和图像文件。

显然,一切正常。应用程序能够正确地向服务器发送数据,服务器能够接收数据并对其进行充分处理(包括图像文件)并以状态 200 回答它。客户端甚至收到此状态 200。但是,回调函数在煎茶触摸应用中调用的是失败的,不是成功的。

这是客户端收到的响应头:

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)

如何知道我做错了什么?

【问题讨论】:

什么是“response.status”值? 向我们展示您的回复。也许你没有从服务器发送success: true。你的响应是 json 吗? 【参考方案1】:

来自sencha docs about form.submit

成功:函数

成功响应后将调用的回调。一种 如果从服务器收到响应,则响应成功,并且 是一个 JSON 对象,其中成功属性设置为 true, “成功”:真。

所以你的响应应该是一个有效的 json 并且包含 success:true 像这样:

success: true, data: 'mydata'

【讨论】:

你明白了!我将返回从 return HttpResponse(status=200) 更改为 return HttpResponse(json.dumps('success' : True,'data':''),status=200)

以上是关于带有错误回调函数的 Ajax 响应的主要内容,如果未能解决你的问题,请参考以下文章

回调函数——callback

Golang回调函数实例二则

ajax回调函数无法获取后台传过来的值(SSM框架),大神请指教!

不使用回调函数的ajax请求实现(async和await简化回调函数嵌套)

jsonp回调函数没有被调用

jQuery 数据表 ajax 回调