$.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],未定义或啥都没有)的主要内容,如果未能解决你的问题,请参考以下文章

尽管成功,$.getJSON 没有返回任何内容

没有 JSONP 的 getJSON 远程请求 - 服务器

$.getJSON() 回调函数没有执行的原因

getJSON 不调用 Web API 方法

jQuery.getJSON().error() 没有在 404 错误上执行

$ .getJSON,回调不运行