【问题标题】:illegal character in jsonp responsejsonp响应中的非法字符
【发布时间】:2010-06-26 20:40:15
【问题描述】:

您好,我正在做一个练习,我正在尝试使用 javascript/ajax 抓取 nytimes 网站的内容。

为了发送跨域 ajax 请求,我使用了一个代理服务器,它返回带有 nytimes 网站内容的 jsonp 响应。

但由于该 html 内容有一些字符(单引号)会引发“非法字符”错误。

<script type="text/javascript" src="http://json-proxy.jgate.de/?callback=callback&url=http%3A%2F%2Fwww.nytimes.com%2F"></script>
<script>
function callback(obj) {
 alert(obj);
}
</script>

有什么办法可以解决这个错误? 还有什么其他方法可以解决这个问题?

谢谢

(p.s. 这个问题是在我的一位朋友采访中问他的)

更新:这里是相同的雅虎管道链接。 http://pipes.yahoo.com/pipes/pipe.run?_id=748e37c218ed0747d0b868ae8eafefa6&_render=json

【问题讨论】:

    标签: ajax cross-domain jsonp illegal-characters


    【解决方案1】:

    你必须在服务器上转义字符。

    callback('<!DOCTYPE html PUBLIC \"-//W...etc.') // notice the \"-//W
    

    代替:

    callback('<!DOCTYPE html PUBLIC "-//W...etc.') // which will eventually create an error
    

    /\"'等所有特殊字符转义为/, \ ...

    【讨论】:

    • 我无权访问该代理服务器。我在网上找到了那个服务器。
    • 您的第一台服务器存在一个错误,导致它为您尝试获取的站点输出不可用的 JSON。但 Yahoo Pipes JSONP 有效:pipes.yahoo.com/pipes/…
    【解决方案2】:

    Yahoo 管道解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 2011-07-30
      • 2017-10-19
      • 2013-06-20
      • 2012-08-16
      • 2016-07-30
      • 2013-05-28
      • 2013-10-15
      • 1970-01-01
      相关资源
      最近更新 更多