【发布时间】:2014-07-11 18:14:50
【问题描述】:
我无法在 PHP 中发送两个请求并等待两个答案。这是我的代码:
function getXDomainRequest() {
var xdr = null;
if (window.XDomainRequest) {
xdr = new XDomainRequest();
} else if (window.XMLHttpRequest) {
xdr = new XMLHttpRequest({mozSystem: true});
} else {
alert("Your browser does not support AJAX");
}
return xdr;
}
function sendData() {
var json1= "";
var json2= "";
var xdr = getXDomainRequest();
xdr.onload = function() {
json1 = xdr.responseText;
}
var xdr2 = getXDomainRequest();
xdr2.onload = function() {
json2 = xdr2.responseText;
}
var Id = document.querySelector('#searchField').value;
// Call API
xdr.open("GET", "./dorequest.php?id=" + Id + "&requesttype=player");
xdr.send();
xdr2.open("GET", "./dorequest.php?id=" + Id + "&requesttype=stats");
xdr2.send();
xdr.wait();
// Display results
getHtmlResults(jsonPlayer, jsonStats);
}
正如预期的那样,json1 和 json2 在调用 getHtmlResults 时仍然为空。我可以通过将xdr2.send() 调用到xdr.onload 和xdr2.onload 中的最终函数来同步执行此操作,但我想异步执行此操作以获得更好的响应时间。
谢谢!
(欢迎对代码进行任何其他评论,我对 php 很陌生 :))
编辑:
所以我尝试使用 Ajax,它似乎可以工作 :)
var jsonPlayer = "";
var jsonStats = "";
var steamId = document.querySelector('#searchField').value;
$.when(
$.ajax({url: "./dorequest.php?steamid=" + steamId + "&requesttype=playersummary",
success: function(response){ jsonPlayer = response; }}),
$.ajax({url: "./dorequest.php?steamid=" + steamId + "&requesttype=csgostats",
success: function(response){ jsonStats = response; }}) ).done(
function(player, stats) {
getHtmlResults(player, stats);
});
【问题讨论】:
-
那是 Javascript,不是 PHP。
标签: javascript asynchronous xmlhttprequest xdomainrequest