【发布时间】:2017-05-05 21:25:58
【问题描述】:
我的公司有一项服务,可以在发送序列号时返回有关产品的数据(不确定它在 Oracle 服务器上运行是否重要)。可以通过在此 URL 后附加序列号来访问该服务:
由于服务需要身份验证,我将序列号请求从 HTML 页面发送到在我的服务器上运行的 PHP。
我正在从 HTML 页面对 PHP 页面进行 AJAX 调用。 serialsearch 变量是用户输入的 SN:
$.ajax({
"async": true,
"url": "./serialsearch.php?serialsearch=" + serialsearch,
"method": "GET",
"headers": {
"accept": "application/json",
"cache-control": "no-cache",
}
}).done(function(response) {
var renderedHtml = template(response.SerialInfo);
var context = $("#result").html(renderedHtml);
});
PHP 看起来像这样:
<?php
$url = 'https://example.com/searchserial/v1/' . $_GET['serialsearch'];
$info = array('Accept: application/json', 'Content-Type: application/json; charset=UTF-8', 'Cache-control: no-cache');
$get_field_string = http_build_query($info, '', '&');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERPWD,'Authorization: Basic blahblahblahblahblahblah=');
curl_setopt($ch, CURLOPT_HTTPHEADER,array($get_field_string));
curl_setopt($ch, CURLOPT_HEADER,1);
$exec = curl_exec($ch);
print_r($exec);
curl_close($ch);
?>
一切正常,除了服务器只返回 XML,但我需要 JSON,以便我可以将响应数据插入 HTML 页面上的 Handlebar 模板。
当我在 Postman 中测试服务并选择 JSON 时,它在第一个字符上出错,这通常是从服务器发送的标头,而不是纯 JSON。 XML 视图显示所有相应的数据。
我是否需要在 PHP 中将 XML 转换为 JSON,然后再将其发送回进行 AJAX 调用的 HTML?在 HTML 页面中转换它?看起来将 XML 转换为 JSON 并不是最直接的事情。
【问题讨论】:
-
你应该把它转换成php,而不是html