です。数日前にすべて動作していましたが、突然それは機能しなくなりました。私はすべてを試したと思いますが、変更はありませんので、最後の手段として是非!
私はthis articleを経て、私のphp.iniファイルをチェックし、post_max_sizeのは8M
JSからAjaxリクエストに設定されています:
// From this SO answer: http://stackoverflow.com/a/14794856/4669619
$rest_json = file_get_contents("php://input");
$_POST = json_decode($rest_json, true);
var_dump($rest_json);
var_dump($_POST);
getRouteList(); // Works
if (isset($_POST["action"]) && !empty($_POST["action"])) {
file_put_contents('function_result.txt', "Action: Set" . PHP_EOL . PHP_EOL, FILE_APPEND);
$action = $_POST["action"];
if ($action == "getRouteList") {
getRouteList(); // Doesn't work (b/c $_POST isn't set)
}
} else {
file_put_contents('function_result.txt', "Action: Not set!" . PHP_EOL . PHP_EOL, FILE_APPEND);
}
myPage.php
$.ajax({
url: "getFromDB.php",
type: "post",
dataType: 'json',
headers: {'Content-Type': 'application/json'}, // Tried with and without
data: { action: "getRouteList" },
success: function(obj){
alert("Yay!");
}
});
var_dump出力:
string(19) "action=getRouteList" // $rest_json
NULL // $_POST // NULL b/c of '='?
function_result.txt出力
Action: Not set!
Firebugの情報:あなたは、データを文字列化する必要があるJSONを引き続き使用したい場合は、contentTypeのを混合している
を提出するようにContent-Typeに
header
を削除し、PHPでfile_get_contents()
とjson_decode()
を削除し、$ _POST、その後エンコード形式が使用されるように、あなたがdefintielyドン送信するために」 contenTypeをjsonに設定するか、 'json_decode'を使用します。 jsonを送信したい場合、データオブジェクトをストリング化する必要があります.jQueryはそれを行いません – charlietfl