Javascript Django AJAX JSON响应在浏览器中显示为原始文本

Javascript Django AJAX JSON响应在浏览器中显示为原始文本,javascript,python,ajax,json,django,Javascript,Python,Ajax,Json,Django,我正在Pinax框架内使用Django 1.4.2开发一个Stripe Web应用程序,并具有: django条纹付款 埃尔达里奥阿贾克斯 除了JSON格式的ajax响应似乎没有被任何ajax回调处理,因此在浏览器中显示为原始JSON数据外,我的一切都正常工作: {"html": "\n\n<div class=\"change-card\">\n <h2>Current Card</h2>\n <p class=\"lead\">\n

我正在Pinax框架内使用Django 1.4.2开发一个Stripe Web应用程序,并具有:

django条纹付款 埃尔达里奥阿贾克斯 除了JSON格式的ajax响应似乎没有被任何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"}
在我的基本模板中有一些javascript,当选择ChangeCard按钮时,它会被调用并显示stripe中的表单以输入卡片详细信息。我不认为这是我的错,我是直接从我的电脑上拿的

我具有以下上述功能:

<script src="{% static "js/jquery-1.9.1.min.js" %}"></script>
<script src="//checkout.stripe.com/v2/checkout.js"></script>

再次。。。这是现成的django stripe支付代码。接下来发生的事情是上面提到的原始JSON。

好的,我解决了它。事实证明这确实是一个jQuery问题。我在应用程序中引用了两个jQuery文件。当我删除第二个,并坚持与上述问题中提到的一个,它的工作!我的信用卡详细信息在页面上按预期更新,尽管更新速度很慢

因为我使用的是pinax框架,所以它自动附带了一个jquery引用。Django调试工具栏至少需要它。它包含在下面的base.html文件中:

{% block script_base %}{% endblock %}
html位于这里:pinax\u theme\u bootstrap/templates/theme\u bootstrap

幸运的是base.html提供了一个称为jquery\u src的可覆盖块,因此在我的应用程序中的站点\u base.html文件中,我只在底部输入了以下内容:

{% block jquery_src %}{% endblock %}
这删除了第二个jQuery库


我还尝试使用jqueryv1.11.0,这被认为是jQuery中的错误,而且它也起到了作用。

如果他说它最终成为jQuery问题,那么答案是正确的。你的应用程序使用的是哪个版本的jQuery?我确实把它放在那里了,但显然不够清楚-v1.9.1。我也试过1.11.0和1.8.3。
@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)
{% block script_base %}{% endblock %}
{% block jquery_src %}{% endblock %}