gpt4 book ai didi

Jquery Ajax请求不发送Post数据

转载 作者:行者123 更新时间:2023-12-01 03:17:36 25 4
gpt4 key购买 nike

我成功地使用 Jquery $.ajax 方法进行 AJAX 调用,因为它要发布到的文件正在被调用并执行。但是,没有发送 POST 数据。我想做的就是发送数据并让文件接收它;我不关心返回数据。

我尝试将其更改为 GET,但没有产生结果。我在收到的 URL 中传递了 GET 数据(显然,我猜)。我还尝试更改我发送的数据类型......这些都没有给我任何关于我做错了什么的想法。我还浏览了这里的许多具有类似标题的问题,但似乎没有什么可以解决这个问题。虽然我确信这很简单。

其他可能相关的变量:我正在使用 Knockout JS。我正在使用 .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文件,我的错误在哪里? $_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 数据有什么想法吗?我确信这是愚蠢的事情。谢谢!

最佳答案

您的问题是您将 data 设置为 JSON 字符串。根据文档,jQuery 不会处理字符串数据,只会处理对象 http://api.jquery.com/jQuery.ajax/

而是使用ko.toJS来获取一个干净的JS对象,这应该会让你走上正确的道路。

[编辑]

我刚刚注意到您也设置了 contentType...为此,您将无法使用 $_POST var。相反,您需要从“应该”为您提供原始 JSON 字符串的 file_get_contents("php://input") 获取数据。从那里您应该能够使用 PHP 的 json_decode 将其转换为真正的 PHP 对象。

关于Jquery Ajax请求不发送Post数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13829713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com