OSXはこれで行けたが、CentOSではダメ
Javascript
function checkNewOrder(uuid) {
var res = fetch("./test.php", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
//引数が色々あって...。
})
}).then((response) => {
if (response.ok)
return response.json(); // レスポンスをテキストとして変換する
}).then((rcvData) => {
console.log("rcvData", rcvData); //とりあえず確認
if (rcvData.length > 0) {
let msg = "新たにデータが入りました<br>\n";
//rcvData[i]["NAME"]とかを使って色々処理
}
});
}
php
$dbh->beginTransaction();
$stmt = $dbh->query("select * from TableName;");
$stmt->execute();
$dbh->commit();
$result = $stmt->fetchall(PDO::FETCH_ASSOC);
echo json_encode($result, JSON_UNESCAPED_UNICODE);
CentOSだとJSの console.log("rcvData", rcvData);
のところで「rcvDataって何?」ってなってしまう。
##結局こうやって対応できた
Javascript
function checkNewOrder(uuid) {
var res = fetch("./test.php", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
//引数が色々あって...。
})
}).then((response) => {
if (response.ok)
return response.text(); // jsonからtextに変更した
}).then((rcvData) => {
var rcv = JSON.stringify(rcvData); //JSONオブジェクトに変換
if (rcv.length > 0) {
let msg = "新たにデータが入りました<br>\n";
//rcvData[i]["NAME"]とかを使って色々処理
}
});
}
response.json();
をresponse.text();
にしてJSON.stringify
でオブジェクト化するとCentOSでOKだった。
OSXとCentOS で挙動が違うのはなぜ?
でも、結局こっちかな
function checkNewOrder(uuid) {
const response = fetch("./checkNewOrder.php", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
"uuid": ???; //パラメータとか
})
}).then((response) => {
if (response.ok)
return response.json(); // JSON
// return response.text();
}).then((response) => {
console.log("response", response);
//var rcvData=JSON.parse(response); //result.text() だったらこっち
//何らかの処理;
});
}