php - 我将 Goodreads API 结果从 XML 转换为 JSON 的方法出了什么问题?

标签 php json xml api

我有一个名为 bookscript.php 的 PHP 页面,专门用于将 Goodreads API 结果从 XML 格式转换为 JSON 格式:

<?php 
    $xml_string = file_get_contents("https://www.goodreads.com/search?q=" .$_REQUEST['search']. "&search%5Bfield%5D=title&format=xml&key=ZuqW9sL15d3JvEwmLyaNCg");
    $xml = simplexml_load_string($xml_string);
    $json = json_encode($xml);
    $array = json_decode($json,TRUE);
    echo $json;
?>

在我的主页上,我将 bookscript.php 插入此 AJAX 调用中:

  function GetBooks(request) {
    //Replace spaces with a '+'
    var url = request.term.replace(/\s/g,"+");
    return $.ajax({
        'url': "php/bookscript.php?search=" + url,
        'dataType': 'json'
    }).then(function(data){
        return $.map(data.results || [], function(v,i){
            return {
                label: v.work.title + ' BOOK (' + v.work.original_publication_year + ')',
                value: v.work.title
            }
        });
  })

但这不起作用。当我访问 http://www.example.com/php/bookscript.php?search=dog ,页面上只显示“false”一词。

将此与 Goodreads 的实际结果进行比较:https://www.goodreads.com/search/index.xml?&key=ZuqW9sL15d3JvEwmLyaNCg&q=dog

所以我的问题是......我的方法出了什么问题?我的网站上确实有 SSL 工作(不确定这是否相关),所以应该排除这个问题......

我确实知道 GET 请求代码应该有效,因为相同的代码可以与使用 JSON 格式的其他 API 配合使用。

编辑:问题实际上是我的服务器上没有安装 PHP。 =)

最佳答案

我已经用这段代码进行了测试,一切都很好,

<?php $xml_string = file_get_contents("https://www.goodreads.com/search?q=dog&search%5Bfield%5D=title&format=xml&key=ZuqW9sL15d3JvEwmLyaNCg");
$xml = simplexml_load_string($xml_string);
$json = json_encode($xml);
$array = json_decode($json,TRUE);?>

<pre>
    <?php print_r($array); ?>
</pre> 

数组打印如下:

Array
(
    [Request] => Array
        (
            [authentication] => true
            [key] => Array
                (
                )

            [method] => Array
                (
                )

        )

    [search] => Array
        (
            [query] => Array
                (
                )

            [results-start] => 1
            [results-end] => 20
            [total-results] => 26080
            [source] => Goodreads
            [query-time-seconds] => 0.31
            [results] => Array
                (
                    [work] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 10479953
                                    [books_count] => 38...

也许你的客户端出错了? ajax调用的结果是什么?

关于php - 我将 Goodreads API 结果从 XML 转换为 JSON 的方法出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36418753/

相关文章:

javascript - 用于 jQuery UI 自动完成的 JSON 数组

html - 是否可以在 XML 属性中包含 HTML 文本或 CDATA?

xml - 如何读取多个XML节点? (创新设置)

java - 使用注释插件 + JAXB 在 java 'field' 中插入自定义注释(基于 xsd -> java)

php - 如何在MySQL存储过程中使用IN运算符?

php - 在 Laravel 中创建数据库约束断言

javascript - MySQL 和 AJAX,可以在其中之一中运行,但不能在另一个中运行

javascript - 在弹出函数中运行 AJAX?

python - 如何使用 python 生成特定的嵌套 JSON

java - 如何在 Restful Web 服务上接收 Json 对象?