我写的NPM模块应该在Node和浏览器上工作(通过Browserify打包)。
其部分功能是执行JSONP调用,并返回已解析的数据。
我无法让它发挥作用。
我尝试使用jsonp-client
和jsonp
npm模块,但收效甚微。
node-jsonp
:https://www.npmjs.com/package/node-jsonp
promise = new promise (resolve, reject) ->
nodejsonp url, (json) ->
resolve json
上面的代码片段在Node中工作正常,但由于Same Origin跨域安全策略,浏览器失败。
jsonp-client
https://www.npmjs.com/package/jsonp-client
promise = new promise (resolve, reject) ->
jsonpclient url, (err, data) ->
if (err)
console.log err
resolve data
在这种情况下,我收到错误"错误:无法在URL(...)"上找到回调,但我无法从文档中了解如何正确实现该功能。
帮助不大? :)
编辑:提到的第一个包实际上是" node-jsonp"而不是" jsonp"
答案 0 :(得分:0)
看起来您使用的API不正确。 first one包的Api为:jsonp(url, opts, fn)
,因此您应该重写代码并添加选项:
promise = new promise (resolve, reject) ->
jsonp url, {}, (json) ->
resolve json
Second one在文档中有这个:
在浏览器上,您必须在URL上提供有效的回调。
URL需要manual adding of callback参数。您应该检查how jsonp works:它在调用此回调函数时添加了callback
GET参数和响应。即
<api url>?callback=cb
; eval
- 在您的应用中cb({json});
cb
,它将接收json作为参数。