【发布时间】:2019-10-06 20:09:49
【问题描述】:
我正在发送GET 请求。我处理数据并获得重定向的链接。我知道需要将其发送回客户并从中移出。该链接有效。但由于某种原因,该函数没有进入is_ajax () 块。
$(document).on('click', '.top_up_pay', function (e) {
var post_data;
e.preventDefault();
var amount = +$('tr.sum > td.price > span.value').text();
var products_id = [];
var products_count = [];
var products_deliv = [];
$.each($('.name'), function(){
var id = $(this).attr('data-product_id');
products_id.push(id);
var count = $(this.parentNode.parentNode.parentNode).find('input[name="count"]');
products_count.push(count.val());
var deliv = $(this.parentNode.parentNode.parentNode).find('.delivery');
products_deliv.push(deliv.val());
})
var new_post = $('.new_post > input')
var ukr_post = $('.ukr_post > input')
var recipient = $('.recipient > input')
var phone = $('.phone > input')
var sum = $('tr.sum > td.price > span.value');
var data = {
products_id: products_id,
products_count: products_count,
products_deliv: products_deliv,
new_post: new_post.val(),
ukr_post: ukr_post.val(),
recipient: recipient.val(),
phone: phone.val(),
sum: sum.text(),
comment: comment,
amount: amount
}
$.ajax({
type: "GET",
url: "/payments/top-up-pay/",
data: data,
crossDomain: true,
success: function(data){
window.location = data.redirect_to
},
error: function(data){
alert('Error') //Error
}
})
setTimeout(function () {
window.location.href = "/products/";
}, 2000);
观看次数
def top_up_pay(request):
template = 'payments/top_up_pay.html'
conf_currency = AppConfig.get_config('subscription_price_currency')
if request.method == "GET":
global req_data
req_data = get_request_data(request)
amount = Decimal(req_data.get('amount'))
if conf_currency:
req_user = request.user
invoice = Invoice.objects.create(
invoice_type=INVOICE_TYPE.TOP_UP,
user=req_user,
amount=amount*100,
currency=conf_currency
)
params = {
"currency": invoice.currency,
"amount": int(invoice.amount),
'order_id': str(70),
"operation_id": str(70),
"order_desc": "payment",
}
integration = FondyIntegration(params)
redirect_to = integration.checkout_url()
if request.is_ajax():
response = HttpResponse(json.dumps({'success': True, 'location': redirect_to}), content_type="application/json")
return response
else:
return redirect(redirect_to)
return render(request, template, ctx)
回复:
【问题讨论】:
-
不确定我是否理解发生了什么。你怎么知道你的视图没有进入
if request.is_ajax()条件?您在 javascript 成功函数中实际得到的响应是什么?请注意,您的返回 JSON 设置了location而不是redirect_to参数。 -
在调试器的帮助下,我确保这个块没有进入。
-
在响应中我得到错误函数。
-
那么您将看不到任何视图路径。在到达
if is_ajax()之前,您的视图在某处出现错误。你的 django 控制台显示什么? -
它应该给出什么?如何检查?
标签: jquery ajax django redirect request