我在使用某些软件时遇到问题。通常我们会制作培训材料,然后将其托管在 LMS 中,但这次我必须将课程结果发送到另一台服务器(使用 Articulate Storyline 360 并尝试发布到另一台网络服务器上的 php 文件)。
我已经设法插入一个触发 javascript 的事件,当我用一个简单的警告框对其进行测试时,它确实正确显示了 FORENAME、SURNAME 和 DEPOT 的变量,使用:
var player = GetPlayer();
alert("Welcome back, " + player.GetVar("Forename") + ".");
所以我知道 player.GetVar(variable) 有效。我的问题是让 POST 工作。我知道它不起作用,因为之后我没有得到成功弹出窗口,并且没有数据进入另一端。
我等待接收 JSON 的 php 文件是:
// takes raw data from the request
$data = file_get_contents("php://input");
$json = json_decode($data);
//Get Variables
$forename = $json['Forename'];
$surname = $json['Surname'];
$depot = $json['Depot'];
我对 javascript 的经验为零,所以我真的很想找人来帮助我使用这个 POST 方法,我在谷歌上看到了很多不同的方法,但没有一个有意义。谢谢
我的 POST 代码是:
//get variables and build JSON
var player = GetPlayer();
JSONObject json = new JSONObject();
json.put("Forename", player.GetVar("Forename"));
json.put("Surname", player.GetVar("Surname"));
json.put("Depot", player.GetVar("Depot"));
//post
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
try {
HttpPost request = new HttpPost("https://flashpoint.flogas.co.uk/assurance/include/tasks/dmbctest.php");
StringEntity params = new StringEntity(json.toString());
request.addHeader("content-type", "application/json");
request.setEntity(params);
httpClient.execute(request);
// handle response here...
} catch (Exception ex) {
// handle exception here
} finally {
httpClient.close();
alert("Details have been sent...");
}