Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript获取发送和接收数据_Javascript_Json_Fetch - Fatal编程技术网

如何使用JavaScript获取发送和接收数据

如何使用JavaScript获取发送和接收数据,javascript,json,fetch,Javascript,Json,Fetch,我试图向JS中的外部页面发出请求并返回数据。这需要等待响应,所以我认为使用AJAX是行不通的,但我可能弄错了。我不太精通JS,所以如果我只是想学习,请原谅我 这是请求脚本- fetch('return.php', { method: 'GET' }) .then(function(response) { return response.json(); }) .then(function(json) { obj = JSON.parse(text); docum

我试图向JS中的外部页面发出请求并返回数据。这需要等待响应,所以我认为使用AJAX是行不通的,但我可能弄错了。我不太精通JS,所以如果我只是想学习,请原谅我

这是请求脚本-

fetch('return.php', { 
    method: 'GET'
 })
 .then(function(response) { return response.json(); })
 .then(function(json) {
     obj = JSON.parse(text);
     document.getElementById("demo").innerHTML = obj.employees[1].firstName + " " + 
     obj.employees[1].lastName;
 });
然后在返回文件中有一个JSON响应-

var text = '{"employees":[' +
    '{"firstName":"John","lastName":"Doe" },' +
    '{"firstName":"Anna","lastName":"Smith" },' +
    '{"firstName":"Peter","lastName":"Jones" }]}';
每次我试着执行这个我都会

Unexpected token < in JSON at position 0
JSON中位置0处的
意外标记<
我相信这意味着它不会返回JSON数据,但我可能错了。在函数执行完成后,如何向返回页发出请求并返回数据


谢谢

意外标记<在JSON中的位置0
强烈暗示return.php正在返回某种html。尝试导航到return.php以查看返回的内容,然后进行相应的解析


您不需要
obj=JSON.parse(文本)。这将引发一个错误,因为未定义文本,但您的获取调用在response.json()上失败,因为响应不是json。

这可能会解决问题吗?:

fetch('return.php', {
  method: 'GET',
})
  .then((response) => {
    response.json();
  })
  .then((jsonResponse) => {
    const obj = jsonResponse;
    document.getElementById('demo').innerHTML =
      obj.employees[1].firstName + ' ' + obj.employees[1].lastName;
  });

检查响应并查看其中的内容是有意义的,例如,CORS错误、访问错误等。fetch的响应已经是JSON,那么为什么要再次将其解析为JSON呢。如果您将JSON传递给JSON.parse,它将通过一个错误进行解析。不要手动构建JSON。如果我删除JSON解析,我仍然会得到相同的错误,什么是
text
text
fetch
无关。好的,谢谢,return.php只包含如下所示的obj变量。文件中没有其他内容。这是一个测试环境。我设置来学习如何正确执行此操作您的响应不是有效的json-它是javascript。JSON是一种基于对象的javascripts格式的数据格式,但它不是javascript。我强烈建议在这里阅读JSON:啊,好的,是的,我明白你的意思。这样做的目的需要在JS文件中,所以我是否应该不使用JS,或者是否有方法格式化JSON以便返回。对不起我的无知,但我习惯了PHP,它非常容易发送和接收数据lol@RyanD我很困惑。你说服务器端是PHP;这就是返回响应的原因。它当前返回HTML,这意味着问题在PHP方面。所以应该很容易,然后。。。“在
return.php
中的JSON响应必须在JS中”没有多大意义。它要么是PHP,要么是JS,要么是JSON。如果您的服务器端运行的是PHP,那么它一定是PHP——PHP可以返回JSON,但您不能在PHP文件中神奇地执行JS。“只需使用Ajax…”
fetch
就是Ajax<代码>等待
是使用
然后
的替代方法。您可能想退一步,用详细信息编辑问题——仍然不清楚您要做什么,或者您是否理解您要使用什么。是的,现在我不再收到JSON错误,我无法读取未定义的属性“employees”。我会调查的好,那么问题是服务器端。。。我在其他评论中读到。。。没有php吗?只有两个js文件?您是否有express/node制造的服务器。。。要将get请求发送到?要发回JSON?好的,是的,这是我不熟悉的部分。我可以有2个php文件,因为它们在服务器上。我通常使用PHP,但我必须用javascript发出请求,所以我尝试返回响应。如果我解释一下我猜的原因可能会有所帮助。我正在玩在TronWeb中进行事务的游戏,请求是在JS中进行的,因此我需要返回显示事务是否成功的数据。因为我无法将JS传递给PHP,所以我不知道其他方法如何进行。我尝试了AJAX,但异步无法工作,因为我需要等待响应