在没有回调的情况下将匿名函数返回给jsonp调用

时间:2016-08-23 16:10:50

标签: javascript jsonp

因此,我被要求创建某种Web服务,将javascript库(基于查询参数更改)返回到jsonp调用。 我试着写下一些脚本来做到这一点,看起来很可能也很简单。 现在的问题是,我读了很多关于jsonp的文章但是,为什么我不能做这样的事情呢?我能做些什么才能达到相同的结果而不是这样呢?

客户端示例:

var script = document.createElement('script');
script.src = '//my_url/testjsonp.php';

document.getElementsByTagName('head')[0].appendChild(script);

服务器示例:

echo 'var a = function(){ /* basically what i want here */ }()';

1 个答案:

答案 0 :(得分:1)

有几个问题:

  1. 您正在创建全局a变量。致电您服务的页面应该负责,所以除非您已a配置,否则这是一个问题。

  2. 你的函数中的代码必须神奇地知道它应该对数据做什么。这与JSONP的观点相反,JSONP只是为了服务器返回数据并让客户决定如何处理它。

  3. 这两个原因是标准JSONP请求允许调用者指定回调名称(通常带有callback参数,但名称不同)的原因

    http://example.com/path/to/service?callback=foo
    

    ...标准的JSONP响应如下所示:

    foo({/*...JSON here...*/});
    

    这样,调用者定义了函数,该函数知道如何处理你传入它的数据。