【发布时间】:2012-11-06 06:29:47
【问题描述】:
我对 Ajax 完全陌生,但正在尝试为 django 工作提供一个反馈模块,这是一个可供用户提交反馈的选项卡。
这是模板:
<div id="feedback_button" class="white left normal"><a href="/feedback/">feedback</a></div>
<div class="hiding">
<div id="feedback_popup" class="colorbox" style="width: 500px">
<h1>Feedback</h1>
{% if not feedback_text %}
<p style="margin-bottom: 0">We would be happy to consider any feedback you have.</p>
{% else %}
{{feedback_text}}
{% endif %}
<form class="feedback" action="{% url feedback.views.handle_ajax %}" method="POST" style="margin: 0">{% csrf_token %}
<div style="display: none"><input name="body" value="..."/></div>
<label for="email">email (optional)</label>
<input name="email" value="{{user.email}}"/>
<div class="email error"> </div>
<label for="subject">subject (optional)</label>
<input name="subject"/>
<div class="subject error"> </div>
<label for="text">message</label>
<textarea name="text"></textarea>
<div class="text error"> </div>
<div class="buttons">
<button>Send</button>
</div>
</form>
<div class="thanks hiding">Thank you for your feedback!</div>
<div class="general error hiding"></div>
</div>
</div>
<script>
$(function(){
feedback.init({
'button':$('#feedback_button'),
'drop':$('#feedback_drop'),
'popup':$('#feedback_popup')
});
if (document.cookie == "") {
// CSRF protection requires a cookie to be set already.
$('#feedback_button').hide();
}
});
</script>
我看到了反馈按钮,但是当我单击它时,没有任何反应。因为我是 jquery/ajax 的新手,不太确定从哪里开始调试这个......有什么提示吗?
这是我在base.html 模板中调用它的地方:
<body class="{% block body_class %}{% endblock %}">
{% include "feedback/button.html" %}
<div id="wrapper">
这里是相关的 jquery:
var feedback = {};
feedback.init = function(config) {
if (!(config.button && config.drop && config.popup))
throw "invalid params";
config.popup.find('form.feedback').ajaxSubmit({
'onstart':function(){
config.popup.addClass('loading');
},
'onend':function(){
config.popup.removeClass('loading');
},
'onerror':function(why){
alert('Error! '+why);
},
'onsuccess':feedback.done(config)
});
config.button.click(function(){
config.drop.removeClass('hiding');
config.popup.removeClass('hiding');
config.popup.find('input[name=email]').focus();
});
config.popup.find('.close').click(feedback.closeit(config));
};
【问题讨论】:
-
你能告诉我们feedback.init是从哪里来的吗?它是一个jquery插件吗?
-
是的,刚刚添加了这个。这是一个jQuery插件。我检查以确保它加载的所有 jquery 插件都在我的静态目录中可用。
-
能否将插件主页等发给我们。
-
好的,您似乎按照github.com/jabapyth/django-feedback/tree/… 自述文件所述正确添加了代码,但这没有意义,我可以看到您的最终页面 html 是在网络上还是在本地
-
它现在是本地的,但如果你想看,我可以把它放到网上。