我使用的是PyCharm (用于DJango框架的集成开发环境),它似乎可以工作,但我有这个错误
error: [Errno 10053] An established connection was aborted by the software in your host machine当我单击Dajaxice call back按钮查看控制台时,它显示
Dajaxice: Something went wrong. 模板如下:
<input type="submit" class="btn btn-primary" value="Display" id="showbutton" onclick="Dajaxice.tbl.sayhello(my_js_callback);">出于某种原因,我的应用程序名为tbl。
ajax.py
from django.utils import simplejson
from dajaxice.decorators import dajaxice_register
@dajaxice_register
def sayhello(request):
return simplejson.dumps({'message':'Hello World'})url.py
from django.conf.urls import patterns, include, url
from dajaxice.core import dajaxice_autodiscover, dajaxice_config
dajaxice_autodiscover()
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^$', 'tbl.views.display_maps', name='home'),
url(r'^admin/', include(admin.site.urls)),
url(r'^accounts/auth/$', 'tbl.views.auth_view'),
url(r'^accounts/logout/$', 'tbl.views.logout'),
url(r'^profile/$', 'tbl.views.user_profile'),
url(r'^accounts/loggedin/$', 'tbl.views.loggedin'),
url(r'^accounts/invalid/$', 'tbl.views.invalid_login'),
url(r'^landinfo$', 'tbl.views.landpin_info'),
url(r'^simple-autocomplete/', include('simple_autocomplete.urls')),
url(dajaxice_config.dajaxice_url, include('dajaxice.urls')),
)我不知道出了什么问题。我遵循了Dajaxice的文档,但在运行应用程序时再次遇到此错误。
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 10053] An established connection was aborted by the software in your host machine发布于 2015-03-21 05:41:18
dajaxice的“有些出错”错误消息可能是由各种问题引起的,包括python函数中的参数名称丢失或拼写错误,或者JavaScript函数中生成的异常。但是,您的示例非常简单。python函数中没有命名参数,并且您没有提供JavaScript函数的代码。您的示例遵循我在自己的代码中调试和更正的类似问题的模式。
它与提交按钮的onclick处理程序的使用有关。我认为从提交按钮处理程序进行ajax调用会在服务器处理通过提交表单生成的POST请求的同时启动服务器上的异步活动。我相信服务器在完成对ajax调用的响应之前会看到POST请求,而POST会抢占ajax调用,从而导致dajaxice错误消息。
调试和找出根本原因相当复杂,但我尝试了大量的测试用例,并且可以使用Safari浏览器和Django python开发服务器一致地重现这种行为。
浏览器和服务器都必须处理异步消息,才能使ajax调用工作。我可能错误地认为服务器允许这种抢占。相反,它可能是你的浏览器。无论如何,最终结果都是一样的。
那么如何避免这个问题呢?在我的示例中,我在表单中添加了一个隐藏的input元素,并将使用ajax发送的数据附加到该input的value字段。然后,隐藏的数据将自动与提交表单时自动生成的帖子中的其他表单数据一起发送。
还有其他解决方案:通过ajax提交所有表单数据,并禁用表单数据的自动提交POST (Submitting HTML form using Jquery AJAX)。或者,您可以使用一些与表单提交无关的事件通过ajax将数据发送到服务器。
发布于 2015-12-18 01:04:04
你使用的是什么版本的Django?
Dajaxice是一个死项目,不能与Django >1.5一起工作。(请参阅my other post。)
https://stackoverflow.com/questions/25615107
复制相似问题