Django 1.10。
在DetailView中,我想通过ajax更新模型对象。嗯,模型对象被更新了。但是ajax成功函数无法从post方法中获取数据。我在失败函数中发生。
换句话说,在UpdateView中的Django中,我可以在form_valid的断点处停止,控制它返回一个带有代码200的Http响应。稍后,如果我用详细信息刷新页面,我可以看到模型对象已经改变。
但在Chrome开发工具,而调试js我发生在失败函数。和jqXHR. state=0,文本状态="错误",错误抛出=""。
我准备了一份真实情况的模拟:https://Kifsif@比特桶。org/Kifsif/ajax\u更新。吉特
有一点不同:此UpdateView呈现一般的_细节。html。在现实生活中,它应该呈现局部细节。html。这是ajax,我们不需要重新加载整个页面。
因此,此模拟呈现整个页面。这是什么意思?这意味着:
1) 如果我在http://localhost:8000/1/detail
,按AjaxEdit链接会导致故障。不工作。在Chrome开发者工具中,我出现在失败函数中。
2) 我回到http://localhost:8000/1/detail
,按编辑。我出现在http://localhost:8000/1/edit
。这是没有ajax的普通编辑。但是视图是有组织的,以便在不重定向的情况下呈现响应。因此,我保存模型并停留在http://localhost:8000/1/edit
。我可以看到整个细节,就好像我在看一个合适的细节视图的结果一样。有两个控制链接:编辑和AjaxEdit。现在AjaxEdit开始工作。
换句话说,athttp://localhost:8000/1/edit
ajax在http://localhost:8000/1/detail
它没有。
我刚刚开始学习ajax。我应付不了这个。我想说的是,重定向可能会影响。但没有重定向。
通过ajax我地址到视图的get方法,并获得适当的数据。和帖子相比有什么区别。
你能评论一下,帮我突破吗?
意见。派克
class GeneralUpdate(UpdateView):
model = General
fields = ['char']
def form_valid(self, form):
self.object = form.save()
return render(self.request, 'general/general_detail.html', {"object": self.object})
模型。派克
class General(models.Model):
char = models.CharField(max_length=100)
def get_absolute_url(self):
return reverse("detail", kwargs={"pk": self.id})
网址。派克
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^create$', GeneralCreate.as_view(), name="create"),
url(r'^(?P<pk>\d+)/detail$', GeneralDetailView.as_view(), name="detail"),
url(r'^(?P<pk>\d+)/edit$', GeneralUpdate.as_view(), name="edit"),
]
general_form.html
<form id="form" action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input id="submit" type="submit" value="Save" />
</form>
一般细节。html
<p id="char">{{ object.char }}</p>
<a href="{% url "edit" object.id %}">Edit</a>
<a id="ajax_edit" href="javascript:void(0)">AjaxEdit</a>
<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s=" crossorigin="anonymous"></script>
<script>
$( document ).ready(function() {
var ajax_edit = $("#ajax_edit");
var char = $("#char");
function show_get(data){
$(data).insertAfter(char);
var submit_link = $("#submit");
submit_link.click(post);
}
function show_post(data){
debugger;
}
function failure(jqXHR, textStatus, errorThrown){
debugger;
}
function post(){
$.ajax({
method: "post",
data: $("form").serialize(),
url: 'http://localhost:8000/2/edit',
success: show_post,
error: failure,
}
)
}
function get(){
$.ajax({
method: "get",
url: 'http://localhost:8000/2/edit',
success: show_get,
}
)
}
ajax_edit.click(get);
});
</script>
如果我理解正确。。。
AjaxEdit
-它从UpdateView
获取响应,并将其直接加载到您的/细节
页面。从技术上讲,你现在仍然在细节
页面上。action
属性指向空。保存
,您的ajax请求将按计划更新数据。/细节
url,因为从技术上讲,您仍然在细节页面
上。DetailView
禁止POST
请求,并用405 HTTP状态踢它(方法不允许),在chrome检查器中检查它。所以这是主要原因。
作为修复,您可以通过添加
$("#form").submit(function(event){
event.preventDefault();
});
在提交链接之前。点击(发布)
问题内容: 好吧,我会简短。我有这个脚本将值放在数据库中。它可以在Chrome,Safari中完美运行,但不能使其在Firefox或IE中运行。似乎数据甚至都没有发布到.php文件中,而ajax根本没有启动。有人吗 这是我的jQuery脚本: 这是我的php文件中的内容: 问题答案: 您没有将事件处理程序定义为参数,因此在 浏览器尝试在全局范围内查找。Chrome碰巧在全局范围内提供了事件对象(因
即使我的帐户可以访问SSMS中的db,并具有sysadmin权限。 检查SQL日志,每当登录失败时,我都可以看到这条消息: 我尝试向和添加,但没有什么不同 但我也试过 以同样的结果
我有很多电子邮件,gmail和其他,我试着给每个人发一封电子邮件。事实上,只有一封电子邮件收到消息,其他的,例如gmail,没有。 对于linux:命令工作正常。 但是使用PHP,邮件不会发送。。。。 我的邮件没有错误。日志你有什么想法吗? 谢谢 编辑:我在linux服务器上。
问题内容: 我是jqGrid的新手,但发现很难按照jqGrid文档进行操作 我无法弄清楚设置JQGrid时如何调用WebMethod。我已经成功进行了Ajax调用以获取数据,然后使用本地数据设置JQGrid。我认为这是设置过程中的一个额外步骤,我应该能够使用url属性提供webmethod的路径。 editurl属性是相同的方式。我从未真正收到过发布到服务器的帖子。 原始码 尝试了JQGrid设置
我无法使用python的VSCode扩展运行带有导入模块/包的python脚本,该扩展允许您直接从VSCode(Microsoft的官方版本)运行脚本。我使用<code>pip3 install numpy</code>和其他模块安装了一堆软件包,我发现我必须这样做,因为只有Mac上的“pip”安装在python 2上。下面的代码示例 当我尝试使用VSCode python扩展(Microsoft
$('modal#u narasi')。模态('show');//完成加载$('.modal title')时显示引导模式。文本(“编辑Perusahaan Baik”);//将标题设置为引导模式标题},错误:函数(jqXHR,textStatus,errorshown){alert('error get data from ajax');});