【发布时间】:2013-06-12 17:26:27
【问题描述】:
我在 file_get_contents 和将结果解码为 json 时遇到了一个奇怪的问题。我必须告诉你,这段代码在其他服务器上是完全正常的。
我正在尝试解码这个 json: http://mediarupt.com/GET/categorized_services_for_supplier.php?suppliersID=10
进入这个页面: http://mediarupt.com/kostas.php
kostas.php 的代码是这样的:
<?php
$servicesJSON = file_get_contents("http://mediarupt.com/GET/categorized_services_for_supplier.php?suppliersID=10");
$ForeignKeys = (object)array();
$ForeignKeys->ServicesList = json_decode($servicesJSON, true);
echo "error: " . json_last_error();
?>
<select name="servicesID" id="servicesID">
<option id="serviceID_0" value="0" rel="0" style="font-style:italic;">Select a category...</option>
<?php foreach($ForeignKeys->ServicesList['categorized_services'] as $value){ ?>
<option id="serviceID_<?=$value['servicesID']?>" value="<?=$value['servicesID']?>" rel="<?=$value['hasStoresList']?>"><?=$value['serviceName']?></option>
<?php } ?>
</select>
<?php
echo '<br><br>The result of file_get_contents ($servicesJSON): '.$servicesJSON;
?>
classified_services_for_supplier.php 的代码:
<?php header('Content-Type: application/json');
require('../settings/dbli.php');
$table = array();
$suppliersID = "0";
if(isset($_GET['suppliersID']) && $_GET['suppliersID']!=NULL && $_GET['suppliersID']!='' ){ $suppliersID = $SQLConn->real_escape_string($_GET['suppliersID']); }
$query = "SELECT DISTINCT Services.servicesID, serviceName, servicePrice, hasStoresList FROM Services, ServicesList WHERE Services.servicesID = ServicesList.servicesID AND suppliersID = '$suppliersID' AND status = '1' AND deleted = '0'";
$result = $SQLConn->query($query);
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$tempArray = array();
foreach($row as $key => $value){
$tempArray[$key] = $value;
}
array_push($table,$tempArray);
}
$arr = array( "categorized_services" => $table);
echo json_encode($arr);
?>
我收到错误 4 作为最新的 json 错误,这意味着我有 JSON_ERROR_SYNTAX。 但我用http://jsonlint.com/ 验证了 json 结果,一切似乎都正常。
另外,两个页面都是 UTF-8 且 BOM 被禁用。 您可以在此处访问 php 配置:http://mediarupt.com/phpinfo.php
希望能找到解决办法……
提前谢谢你
【问题讨论】:
-
您已经完成了
echo $servicesJSON;的测试输出,它包含JSON 代码? -
是的,当然,我只是更改了代码以查看 echo $servicesJSON 的结果
-
您说您已经使用 jsonlint.com 进行了验证,但是将您的 url 粘贴到那里并验证表明 json 无效。
-
确实是的,但只需复制并粘贴纯字符串(分类的_services_for_supplier.php的结果)...您会看到那里没有错误..
-
复制粘贴字符串显然会删除导致字符串在响应中无效的任何字符,响应仍然无效。
标签: php utf-8 file-get-contents json