我正在开发使用Django(1.4.2)内的Pinax框架和带条纹的webapp原始文本:Django的AJAX JSON响应出现在浏览器
- Django的条纹支付
- eldarion- AJAX
我已经得到了一切,除了Ajax响应工作(JSON格式)似乎并不受任何AJAX回调进行处理,因此出现在浏览器中的原始JSON数据:
{"html": "\n\n<div class=\"change-card\">\n <h2>Current Card</h2>\n <p class=\"lead\">\n \n Current card on file is a <strong>Visa</strong>\n ending in the digits <strong>4242</strong>.\n \n </p>\n \n \n \n <form action=\"/payments/a/change/card/\" data-stripe-key=\"\" class=\"form ajax\" data-replace-closest=\".change-card\" method=\"POST\">\n <div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='<>' /></div>\n <input name=\"stripe_token\" type=\"hidden\" />\n <a href=\"\" class=\"btn btn-primary change-card\">Change Card</a>\n </form>\n</div>\n"}
This SO question似乎是相似的,但没有官方的答案,提交者似乎已经弄明白了(通过评论),但这些建议不适用于我。
详情:
我使用python manage.py runserver
器和Firefox中进行测试。
我刚刚开始使用条纹应用程序,并刚刚使用django-stripe-payments的示例在我为我的特定需求量身定制之前开始工作。
我快我的测试案例包括使用从Django的条纹支付标准的AJAX形式更改存储信用卡:
<form action="{% url 'payments_ajax_change_card' %}" data-stripe-key="{{ STRIPE_PUBLIC_KEY }}" class="form ajax" data-replace-closest=".change-card" method="POST">
{% csrf_token %}
<input name="stripe_token" type="hidden" />
<a href="" class="btn btn-primary change-card">{% if request.user.customer.card_kind %}Change{% else %}Add{% endif %} Card</a>
</form>
有一个在我的基础模板一些JavaScript被调用和当选择“更换卡片”按钮时,显示从条纹的表格输入卡片详细信息。我不认为这是错误的 - 我直接从here。
我有功能以上以下:
<script src="{% static "js/jquery-1.9.1.min.js" %}"></script>
<script src="//checkout.stripe.com/v2/checkout.js"></script>
这下面
<script src="{% static "js/eldarion-ajax.min.js" %}"></script>
继令牌的回报(和随后的形式提交事件)下面的视图代码被执行:
@require_POST
@login_required
def change_card(request):
try:
customer = request.user.customer
send_invoice = customer.card_fingerprint == ""
customer.update_card(
request.POST.get("stripe_token")
)
if send_invoice:
customer.send_invoice()
customer.retry_unpaid_invoices()
data = {}
except stripe.CardError, e:
data = {"error": e.message}
return _ajax_response(request, "payments/_change_card_form.html", **data)
再次......这是开箱即用的django-stripe-支付代码。接下来发生的事情是上面提到的原始JSON。
那么在那个答案中,如果他说它最终会成为一个jQuery问题,那么您的应用使用的是哪个版本的jQuery? –
我确实把它放在那里,但显然不够清楚 - v1.9.1我也试过1.11.0和1.8.3。 – user38845