繁体   English   中英

在JS中提取未从php中的json_encode接收适当的JSON格式

[英]fetch in JS is not receiving the appropriate JSON format from json_encode in php

我在JS中有一个从php页面获取数据的函数。

JS代码:

fetch("print.php)
    .then(function (r) {
        return r.json()
    })
    .then(function (values) {
        ......
        ......
    })
}

PHP print.php代码:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    $num = $_GET['num'];
    $datas = array_chunk(array_map('rtrim', file('./myFile.txt')), 5);
    $result;
    foreach ($datas as $index => $data) {
        if ($data[0] == $num) {
            $result = $data;
        }
    }

    echo json_encode($result);
}

运行代码时,出现以下错误:

 SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data 

谁能帮我调试一下。 我已经试过echo-ing json_encode([$ result]); 但这没用。 在过去的3个小时中,我一直在尝试对其进行修复,但是我没有希望。 我不知道该朝哪个方向前进。

更新: 标头的屏幕截图

首先,如果这不仅仅是在此处粘贴代码时的错字,则在PHP文件末尾还有多余的右花括号。

关于代码,虽然尚不清楚myFile.txt文件中myFile.txt什么,但让我向您展示它的工作方式示例。 您可以在本地计算机上按照以下步骤进行操作,以复制示例并查看示例是否可以正常使用。

假设我有一个简单的PHP文件名fetch.php

<?php 
if($_SERVER['REQUEST_METHOD'] == 'GET'){
    echo json_encode(['Message'=>'you successfully received the response.']);
}
?>

创建一个HTML页面sample.html并在body标签内添加以下内容。

<ul>
    <li class="print"></li>
</ul>

现在,在</body>标记之前的HTML页面底部添加以下脚本。

<script type="text/javascript">
  $(document).ready(function(){
    var resultContainer = document.querySelector('ul li.print');

    fetch('fetch.php')
    .then(function (response) {
        return response.json();
    })
    .then(function (response) {
        resultDiv.innerHTML = response.success;
    }).catch(function(err){
        resultDiv.innerHTML='There was an error reading the JSON response see here '+err;
    });
   });
</script>

由于我们正在获取一个返回jsonPHP文件,因此我们在response上返回response.json() ,以为其提供适当的MIME类型,以便对其进行正确处理, then将其显示在<li>元素中。 另外,我正在使用。 如果Promise被拒绝,则fail显示错误消息

这很简单,它应该向您显示成功收到响应的文本 Promise解决后,在li里面。 如果是这样,则意味着您需要首先对PHP文件进行故障排除,以查看myFile.txt中的myFile.txt以及到达最后一行时作为响应打印的内容echo json_encode($result);

另外,您的PHP文件指出您正在将查询参数num发送到PHP文件,而您的脚本不包含任何名称为num查询字符串参数。

其次, $result;是多少$result; $datas = array_chunk(array_map('rtrim', file('./myFile.txt')), 5); ,您的大多数代码都没有意义,您应该进行作业,并提供其他人可以理解并帮助您的实际明智的代码。

希望对您有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM