【发布时间】:2016-06-26 21:10:42
【问题描述】:
我应该打电话给第三方供应商 - Cybersource 使用他们的静默订单帖子。问题是我有一个手风琴页面,它有 3 个窗格、帐户创建、服务地址和计费(在第三个窗格上)。
我正在尝试从 [http://mydomain/billing][1] 到 [http://cybersource/silentorderpost/pay][1] 进行 ajax 调用。
在帖子参数中,我设置了响应 url = [http://mydomain/billing][1] 这是 CS 将响应发回的地方。
当 Ajax 帖子从我的网站转到 CS 网站时,我没有收到回调,但 Cybersource 将回复发布回我的网站 [http://mydomain/billing][1],这会重新加载我试图避免的整个手风琴页面。我了解在 Ajax 调用期间,Ajax 期望在与“被调用的 Web 服务”相同的域上得到响应,即我的 Ajax 帖子期望 Cybersource 将响应发布在类似 [http://cybersource/response][1].但是,CS 将响应发布或重定向到我的网站,这可能是原因,我从来没有收到我的回电。当响应发布时,我的整个手风琴页面重新加载,这会导致各种问题。
我的代码:
function myFunction() {
//document.getElementById("myForm1").submit();
var http= new XMLHttpRequest();
var url = "https://testsecureacceptance.cybersource.com/silent/pay";
var params = document.getElementById("queryStr");
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send(params);
//Send the proper header information along with the request
http.onreadystatechange = function() {//IT NEVER COMES BACK TO THIS SECTION
if(http.readyState == 4) {
alert(http.responseText);
console.log("I came back");
}
}
}
</script>
USING JQUERY:
有什么解决办法吗?
【问题讨论】:
-
看来你没有发送请求,如果你使用原生
XMLHttpRequest对象你需要在xhr.open()之后调用xhr.send()方法 -
@ArchLicher 我也尝试过使用 Jquery function myFunction() { //document.getElementById("myForm1").submit(); var http=新的 XMLHttpRequest(); var url = "testsecureacceptance.cybersource.com/silent/pay"; var params = document.getElementById("queryStr"); var jqxhr = $.post( url, function() { alert( "success" ); }) .done(function() { alert( "第二次成功" ); }) .always(function() { alert( "完成" ); }); }
标签: javascript