【问题标题】:wordpress api json malformed- jQuery ajaxwordpress api json 格式错误 - jQuery ajax
【发布时间】:2015-10-09 19:33:48
【问题描述】:

我必须设法使用 API 显示我的帖子,我遇到了格式错误的 json 的问题,因为内容部分中的一些 html 返回了 API。

jQuery ajax:

$.ajax({
    cache: false,
    type: "GET",
    dataType: "json",
    url: "http://bytto.com/wp-json/posts?type[name]=package&filter[category]=eco-tours-petate",
    success: function(data){

    }
});

要查看 json,只需将下一个 url 复制并粘贴到 chrome 或 firefox 中:

http://bytto.com/wp-json/posts?type[name]=package&filter[category]=eco-tours-petate

我评估了http://jsonformatter.curiousconcept.com/ 的回复并说:

Error:Invalid characters found.

我看了一下,它在内容节点和摘录节点上 json 失败。

如果我将其作为纯文本返回:dataType: "text" 它来了,我喜欢做的是清理文本以使其成为 json。

【问题讨论】:

  • 你能分享你的 JSON 吗?
  • 当然,只需将此网址复制并粘贴到 chrome 或 firefox 中:bytto.com/wp-json/…

标签: jquery ajax json wordpress api


【解决方案1】:

答案是做下一个简单的事情:data=(data.replace(/\>/g , ">"));

$.ajax({
    cache: false,
    type: "GET",
    dataType: "text",
    url: "http://bytto.com/wp-json/posts?type[name]=package&filter[category]=eco-tours-petate",
    success: function(data){


      data=(data.replace(/\\>/g , ">"));
      data = $.parseJSON(data);
      console.log(data);


  }
});

这可以使我的字符串成为正确的 json 格式。

感谢@vard! 感谢大家的帮助!

【讨论】:

    【解决方案2】:

    似乎就是 JSON 的 HTML 部分中的换行符导致解析器失败。确实,<br \> 应该是 <br \/>

    这应该在解析 JSON 之前清理它:

    $.ajax({
        cache: false,
        type: "GET",
        dataType: "text",
        url: "http://bytto.com/wp-json/posts?type[name]=package&filter[category]=eco-tours-petate",
        success: function(data){
            data = data.replace('<br \>', '<br \/>');
            data = data.replace(/(?!\\)(\/)/, '\/');
            data = $.parseJSON(data);
        }
    });
    

    【讨论】:

    • 可能是替换 \ for \/ 的功能吗?或将
      替换为
    • no :( 再次格式错误。有一个通用函数可以转义所有必须在 JSON 数据中转义的坏字符以避免任何问题?
    • 应该在 API 端完成。 HTML 中很少有东西可以使 JSON 解析器中断:非转义的正斜杠 (/)、非转义的引号,甚至在自结束标记的斜杠前没有空格。您应该检查所有这些内容并使用replace 清理数据。
    • 或“内容”和“摘录”不来自wordpress api的方式
    • 我用更通用的正则表达式更新了我的答案,应该可以解决正斜杠问题。没有时间测试,但它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多