我正在使用 Jquery$.ajax
方法成功地进行 AJAX 调用,因为它发布到的文件正在被调用和执行。但是,没有发送 POST 数据。我要做的就是发送数据并让文件接收它;我不在乎返回数据。
我尝试将其更改为 GET,但没有产生结果。我在收到的 URL 中传递了 GET 数据(显然,我猜)。我也尝试过更改我发送的数据类型......这些都没有让我知道我做错了什么。我也在这里浏览了许多具有类似标题的问题,但似乎没有任何东西可以解决这个问题。虽然我确信这很简单。
其他可能相关的变量:我正在使用 Knockout JS。我正在使用 .htaccess 重定向在 /public 文件夹中创建单个入口点。
事不宜迟,代码如下:
page.html
<button data-bind="click: save">Save</button>
如果你对 KOJS 不熟悉,它基本上只是在单击时调用函数 save。我很确定这工作正常。
模型.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 数据的任何想法?我敢肯定这很傻。谢谢!