クロスドメイン POST リクエストを実装する必要があります。このコードを使用すると、同じドメインですべてが正常に機能しました。しかし、バックエンドを別のドメインに移動すると、すべてが機能しなくなりました! したがって、タイプミスがある可能性があります。エラーがクロスドメイン要求に関連している場合にのみ存在する可能性があります。ajax と JSONP を使用して POST リクエストを送信してみます。
function requestToServer(url, success, myObjects)
{
$.ajax({
type: "POST",
crossDomain: true,
dataType: 'jsonp',
jsonp: 'jsonp_callback',
url: url,
data: "arrObjects=" + JSON.stringify(myObjects),
success: function(data)
{
success(data);
},
error: function()
{
alert('Server connection error!!!');
}
});
}
およびサーバー スクリプトで、データを送信します。
<?php
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');
include 'connection.php';
$arrObjects = json_decode($_POST['arrObjects']);
$title = $arrObjects->title;
$msg = $arrObjects->msg;
$lat = $arrObjects->lat;
$lon = $arrObjects->lon;
$query = "INSERT INTO `geo_markers` (`id`, `title`, `description`, `lat`, `lon`)
VALUES (NULL, '{$title}', '{$msg}', '{$lat}', '{$lon}')";
$res = mysqlQuery($query);
echo $_GET['jsonp_callback'].'({"success":true});';
mysql_close();
?>
しかし $_POST は空です。しかし、$_GET は値 $_POST を取ります。var_dump を使用して $_POST を確認すると、array(0) であり、$_GET にはすべての送信データが含まれています。
ここで何が問題なのですか?何がうまくいかなかったのですか?