[英]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>
由于我们正在获取一个返回json
的PHP
文件,因此我们在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.