POST先のファイルが呼び出されて実行されているという点で、Jquery$.ajax
メソッドを使用してAJAX呼び出しを正常に行っています。ただし、POSTデータは送信されていません。私がやりたいのは、データを送信してファイルで受信することだけです。データを返すことは気にしません。
GETに変更してみましたが、結果が得られませんでした。受信したURLでGETデータを渡しました(もちろんそうですね)。また、送信するデータ型を変更しようとしました...これは、私が間違っていることについてのアイデアを私に与えてくれませんでした。同様のタイトルでここにある多数の質問も閲覧しましたが、この問題を解決するものは何もなかったようです。確かに簡単なことですが。
関連する可能性のあるその他の変数:KnockoutJSを使用しています。.htaccessリダイレクトを使用して、/publicフォルダーに単一のエントリポイントを作成しています。
そして、これ以上苦労することなく、ここにコードがあります:
page.html
<button data-bind="click: save">Save</button>
KOJSに慣れていない場合は、基本的に、クリックしたときに関数saveを呼び出すだけです。これは正しく機能していると確信しています。
models.js
self.save = function() {
var jsonData = ko.toJSON(self.tasks);
$.ajax("http://test.local.com/js/post.php", {
data: jsonData,
type: "post", contentType: "application/json",
success: function(result) { alert(jsonData) }
});
};
そのアラートは、次のような適切にフォーマットされたJSONオブジェクトを提供します。
[{"title": "Clean up the dog"},{"title": "Warm up the old pasta"}]
それは投稿ファイルだと思いますが、私のエラーはどこにありますか?$_POST配列は空です。また、GETとして送信するように変更すると、それも空になります。私は物事を説明するコードにコメントを入れました。
post.php
if (isset($_POST)) {
//It does get inside this if. That's good at least, right?
$my_file = 'file.txt';
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file);
//It will make this file.
fwrite($handle, print_r($_POST));
//Prints "1" without the quotes
foreach ($_POST as $key => $value) {
fwrite($handle, 'your data: '.$value.'; ');
}
//Prints nothing
}
これがPOSTデータを送信しない理由について何か考えはありますか?ばかげていると思います。ありがとう!