$.getJSON 没有正确返回([object Object],未定义或啥都没有)
Posted
技术标签:
【中文标题】$.getJSON 没有正确返回([object Object],未定义或啥都没有)【英文标题】:$.getJSON doesn't return properly ([object Object], undefined or nothing)$.getJSON 没有正确返回([object Object],未定义或什么都没有) 【发布时间】:2021-10-25 01:28:23 【问题描述】:所以基本上我遇到了 ajax 调用没有检索 JSON 数据的标准问题。那将是它是一个数组,而您没有使用索引。但我 AM 在前端使用索引。我为此看到的所有问题都没有奏效,(其中大多数是“使用索引”)并且我查看了文档。我试过直接瞄准数据库,但我目前正在使用一个 php 文件。我已经尝试过使用 $.getJSON 的标准方式(它什么都不返回),所以我尝试将它定义为一个变量并返回 [object Object] 或未定义(我的代码中仍然有两者)。现在,对于一些代码 数据库.json
["Usrname":"Admin","Comment":"Comments Are Working!","Usrname":"billy","Comment":"y u no work","Usrname":"jrnvreifnwrg","Comment":"vfrjinoiewg","Usrname":"bill","Comment":"testing 123 testing","Usrname":"James","Comment":"Now all that has to be done it to show the text in a chat box","Usrname":"test","Comment":"hi there pls work","Usrname":"Benjamin","Comment":"Hello","Usrname":"Benjamin","Comment":"Hello","Usrname":"Bill","Comment":"Hello"]
我试过用引号和不用引号,似乎没有任何改变
get.php
<?php
header('Content-Type: application/json');
$data = file_get_contents('database.json');
echo $data;
?>
contact.html (只是一个 sn-p,评论 div 在那里并且正在运行)
<script>
$(document).ready(function ()
response = $.getJSON('https://ambitioussociableprotools.babyboy666.repl.co/get.php')
document.getElementById("comments").innerText += response
document.getElementById("comments").innerText += response[0]
);
</script>
<script>
$.getJSON("https://ambitioussociableprotools.babyboy666.repl.co/get.php", function(data)
document.getElementById("comments").innerText += data[0].Usrname
);
</script>
<script>
data = $.get("https://ambitioussociableprotools.babyboy666.repl.co/get.php")
document.getElementById("comments").innerText += data
document.getElementById("comments").innerText += data[0].Usrname
var obj = JSON.parse(data)
document.getElementById("comments").innerText += obj
document.getElementById("comments").innerText += obj[0]
document.getElementById("comments").innerText += obj[0].Usrname
</script>
【问题讨论】:
【参考方案1】:你的问题是CORS,看看:Understanding CORS
将您的 PHP 端点更改为:
<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
$data = file_get_contents('database.json');
echo $data;
?>
如果您想控制来自特定来源的访问,您可以将*
更改为您的请求来源。更多信息在这里:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
【讨论】:
再一次,当我添加它时,这似乎没有任何改变,我正在考虑使用 XMLHttpRequest 重写它 它现在似乎可以工作了。这是一个小提琴:jsfiddle.net/h3cbyo17 好吧,它可能需要一些处理,但这个问题解决了主要问题,所以我不能接受【参考方案2】:$.getJSON()
不返回对象。它是一个异步函数,所以你使用一个回调函数,它接收对象作为参数。
$.get("https://ambitioussociableprotools.babyboy666.repl.co/get.php", function(data)
document.getElementById("comments").innerText += data[0].Usrname;
)
【讨论】:
尝试了这个,但它没有返回任何东西。(可能还有其他问题吗?) 检查浏览器控制台是否有错误。使用“网络”选项卡查看 AJAX 调用实际返回的内容。 尝试将console.log(data);
放入函数中。
我目前正在使用没有 devtools 的设备,(手机[或者如果我不想尝试将其与触摸屏一起使用])我稍后会回复您以上是关于$.getJSON 没有正确返回([object Object],未定义或啥都没有)的主要内容,如果未能解决你的问题,请参考以下文章