gpt4 book ai didi

javascript - 通过ajax post将数据从js发送到php - 错误

转载 作者:行者123 更新时间:2023-12-02 15:43:32 28 4
gpt4 key购买 nike

我正在尝试使用 ajax 将数据从 js 文件传递​​到 php 文件(如下所示)。

我检查了 php 错误日志,发现 php 无法识别我通过 POST 发送的数据(出现“尝试获取非对象的属性”错误)。

当我引用 $json->func 时,如果最后一行失败,我还在下面发布了我的 php 代码。

我做得对吗?我见过一些使用 jquery 的 post 函数的例子,但我喜欢 ajax 方式的成功和错误,所以我一直在努力坚持它。

感谢帮助:)

js:

 $.ajax({
type: "POST",
url: url,
dataType : "json",
data: {func:'getSummId' ,summName: summonerName},
success: function(json){
//bla bla bla
}
error: function(){
//bla bla bla
}

php:

    <?php
header("Content-Type: application/json", true);
header("Access-Control-Allow-Origin: *");
$client_data = file_get_contents("php://input");
$json = json_decode($client_data);
switch ($json->func) {
...

最佳答案

dataType 指的是返回的数据,而不是发送数据的方式。因此,您的数据将位于 $_POST 全局变量中,在这种情况下,使用 php://input 与 json_decode 不起作用

所以你可以使用

$func = $_POST['func'];
$summName = $_POST['summName'];

或者您可以尝试在 jQuery ajax 请求中设置内容类型选项(尽管我从未尝试过此操作,因此您必须对其进行测试)

$.ajax({
type: "POST",
url: url,
contentType: "application/json",
dataType : "json",
data: {func:'getSummId' ,summName: summonerName},

contentType 未设置时,默认为

application/x-www-form-urlencoded; charset=UTF-8

PHP 自动将该类型的请求解析为 $_GET/$_POST/$_REQUEST 全局变量。 PHP 本身并不知道如何自动解析发送给它的 application/json 请求。因此,当想要以 json 形式发送请求数据时,您必须自己读取 php://input

关于javascript - 通过ajax post将数据从js发送到php - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32408698/

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