Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
io(ajax)和Django-update只工作一次,YUI可以';我再也找不到形式了_Ajax_Django_Django Models_Yui - Fatal编程技术网

io(ajax)和Django-update只工作一次,YUI可以';我再也找不到形式了

io(ajax)和Django-update只工作一次,YUI可以';我再也找不到形式了,ajax,django,django-models,yui,Ajax,Django,Django Models,Yui,我正在使用YUI 3.0 io使用ajax提交表单数据。表单字段是从django视图(ModelForm)创建的。第一次加载表单时,我更新了一个字段,并使用YUI onclick提交表单,它调用io回调,运行django视图并再次返回带有更新数据的ModelForm。这只工作一次(保存到数据库,在表单上显示更新数据)。在那之后,就像更新表单字段不被识别一样,当我再次发布时,它不会接受任何新的更改 //Ajax call to Load Member Info YUI().use("node-ba

我正在使用YUI 3.0 io使用ajax提交表单数据。表单字段是从django视图(ModelForm)创建的。第一次加载表单时,我更新了一个字段,并使用YUI onclick提交表单,它调用io回调,运行django视图并再次返回带有更新数据的ModelForm。这只工作一次(保存到数据库,在表单上显示更新数据)。在那之后,就像更新表单字段不被识别一样,当我再次发布时,它不会接受任何新的更改

//Ajax call to Load Member Info
YUI().use("node-base", "io-form","node", function(Y) {
    var formObj = Y.one('#MemberForm')
    var uri = "http://localhost:8000/MemberInfo/{{ member_id }}";
    var cfg = {
        method:'POST',
        form: {
            id: formObj
        }
    }
     function complete(id, o) {
      var id = id; // Transaction ID.
      var data = o.responseText; // Response data.
      document.getElementById('InputDiv').innerHTML = data;//the data is the memberinfo html template w/ data
    };

    function start(transactionid, arguments)
    {
        document.getElementById('InputDiv').innerHTML = "processing...";
    }

    Y.on('io:complete', complete, this);
    Y.on('io:start', start, this);

    var request = Y.io(uri);//run callback on load. don't POST, just load'

    function LoadMemberAjax()
    {
         Y.io(uri, cfg);//callback, POST.
    }
    Y.on("click", LoadMemberAjax, "#btnMemberInfo");
    }
);


#Load Member Info - ajax call
def MemberInfo(request, member_id):
existingMember = get_object_or_404(Member, pk=member_id)
if request.method == "POST":
    if 'userlogin' in request.POST: #we will get username and pwd from login and find person
        NewMember = MemberForm(instance=existingMember)
    else:
        f = MemberForm(request.POST, instance = existingMember)
        if f.is_valid():
            f.save()
            NewMember = MemberForm(instance=existingMember)

else:
    NewMember = MemberForm(instance=existingMember)

return render_to_response("MemberInfo.html", {"Member": NewMember,})
HTML:

<body>   
  <form id="MemberForm">
      <div id="InputDiv">Loading Your Member Information...One Moment...
      </div>
      <input type="button" id="btnMemberInfo" value="save">
  </form>

我不太了解YUI,但我想这里发生的事情是,当AJAX重新加载表单时,它也会创建一个全新的按钮——它不再将onclick事件绑定到LoadMemberAjax。您可能需要重新绑定它,方法是重新运行
Y.on(“单击”,LoadMemberAjax,#btnMemberInfo”)
完成功能的末尾


或者,您可以使用jQuery的
live
调用来确保即使重新创建了元素,绑定仍然保持不变。

我对YUI不是特别了解,但我想这里发生的事情是,当AJAX重新加载表单时,它还创建了一个全新的按钮,不再将onclick事件绑定到LoadMemberAjax。您可能需要重新绑定它,方法是重新运行
Y.on(“单击”,LoadMemberAjax,#btnMemberInfo”)
完成功能的末尾


或者,您可以使用jQuery的
live
调用来确保即使重新创建了元素,绑定仍然保持不变。

另一件需要注意的事情是,如果启用了CSRF中间件,它将进行类似于这种非功能性的重复post尝试。

另一件需要注意的事情是,如果启用了CSRF中间件,它将进行类似于这种非功能性的重复post尝试。

不,这没有帮助。该按钮位于ajax调用之外。形式也是如此。谢谢。不,这没用。该按钮位于ajax调用之外。形式也是如此。谢谢。看起来我没有启用中间件。是的。我想我会把它扔出去,以防其他人遇到这个问题并因此而绊倒。看起来我没有启用中间件。是的。我想我会把它扔出去,以防其他人遇到这个问题并因此而绊倒。
 {% for field in Member %}
 {{ field.label_tag }}
 {{ field }}
 {% endfor %}