我需要将信息从 1C Bitrix 显示到子域。此信息应从 Bitrix 数据库中获取并在子域上发送给我,我应该在其中使用它。
没有办法可以请求数据。
<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
$APPLICATION->SetTitle("Калькулятор");
$IBLOCK_ID = intval($arParams['IBLOCK_ID']);
if ($IBLOCK_ID <= 0) {
$IBLOCK_ID = 34;
}
if (!CModule::IncludeModule("iblock")) {
die('iblock module is not included!');
}
$arSort = array("SORT" => "ASC", "NAME" => "ASC");
$arFilter = array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y");
$obIBlockResult = CIBlockElement::GetList($arSort, $arFilter, false, false, array("ID", "NAME","FILTER_PRICE", "MASS", ""));
$data = array();
while ($arFields = $obIBlockResult->GetNext()) {
$data[] = $arFields;
}
if (isset($_GET['ALL'])) {
echo json_encode($data);
exit;
}
if (isset($_GET['DETAIL_IMAGE'])) {
$pictureUrl = CFile::GetPath($_GET['DETAIL_IMAGE']);
echo CUtil::JSEscape($pictureUrl);
exit;
}
if (isset($_GET['ELEMENT_ID'])) {
$elementId = intval($_GET["ELEMENT_ID"]);
$obIBlockResult = CIBlockElement::GetByID($elementId);
if ($obIBlockResult && $obIBlockResult->SelectedElement()) {
$result = [];
while ($ob = $obIBlockResult->GetNextElement()) {
$arFields = $ob->GetFields();
$arProps = $ob->GetProperties();
$result[] = $arProps;
}
var_dump($result);
echo json_encode($result);
} else {
http_response_code(404);
echo "Элемент не найден";
}
}
?>
当我尝试使用代码 ALL 向此 url 发出请求时,为了简单地获取我需要的数据,我会收到一个页面标题 + 一条信息作为响应。
如果我尝试删除添加的标头,则页面根本无法加载,因此我会收到 500 响应。
请建议向我显示信息的方法。
这是我试图显示的迷你代码
import requests
url = "url"
response = requests.get(url)
if response.status_code == 200:
print("Ответ от сервера:")
print(response.text)
try:
data = response.json()
print("Данные в формате JSON:")
print(data)
except ValueError as e:
print("Ошибка при декодировании JSON:", e)
else:
print(f"Ошибка: {response.status_code}")
为了避免显示标题,需要在文件开头进行调用
最后是可取的