在这里使用Python和JQuery。。在
我们以前在validation(JQuery plugin)调用的submitHandler
中使用普通的form.submit();
提交。它被提交到Braintree的透明重定向url,重定向设置为服务器上的GET处理程序。我们在处理程序中执行确认,然后执行另一个重定向。如果提交的数据没有通过braintree(比如说一张坏信用卡),那么我们在处理程序的响应中向<div id="error">errormessage</div>
写入一些html,并将其插入到用户的页面中。在
问题是如果我们的处理程序中有一个错误,它将产生一个500个状态代码,那么一切都会陷入地狱,并且用户的页面也会出现不受欢迎的行为。在
如果发生这种情况,我希望能够处理处理程序发出的500个响应。在
我想我可以使用jQuery的AJAX的statusCode
属性来完成。在
以下是我尝试过的方法(在submitHandler
)中:
var data = $(form).serialize();
$.ajax({
type: 'POST',
url: braintree_url,
data: data,
statusCode: {
500: function() {
alert('broked response yo');
}
}
});
然后我故意在处理器中提出一个错误来强制500。在
但是我的ajax提交到Braintree的url不起作用。然而,form.submit();
工作得很好。在
我做错什么了?我认为表单可以像这样通过AJAX提交并产生相同的结果,这是错误的吗?在
FWIW,我们为html表单提供了许多属性,如下所示:
^{pr2}$编辑:
在阅读了更多关于ajax的文章之后,我意识到我在这里的设置不起作用的可能原因是它在调用另一个域(Braintree),这违反了同源策略。所以浏览器没有执行。在
发件人:http://api.jquery.com/jQuery.ajax/
Due to browser security restrictions, most "Ajax" requests are subject to the same origin policy; the request can not successfully retrieve data from a different domain, subdomain, or protocol.
好吧。。。这是十年前的ajax版本,但对我来说,它的工作非常出色:
使用普通表单提交(不调用$.ajax),但在页面中锁定一个隐藏的iframe:
然后使用jQuery钩住iframe的
^{pr2}$load
事件:然后更改braintree回调URL以返回JSON数据,该数据将在iframe中呈现,以便您可以在客户端处理它。就这样!请注意,此方法假设您将braintree重定向回与当前页面具有相同来源的URL。否则我认为你无法阅读iframe的内容。在
相关问题 更多 >
编程相关推荐