有人能向我解释如何像给五岁的孩子一样进行JSONP调用吗?

11 浏览
0 Comments

有人能向我解释如何像给五岁的孩子一样进行JSONP调用吗?

我已经在一个服务器上有一个.json对象。它是正确的,没有语法错误(有效的json)。我想通过JSONP调用这个对象,因为它驻留在与我的应用程序不同的服务器上。\n我觉得我理解如何在客户端实现,但对于服务器部分我一无所知。当我按照网上已有的信息操作时,我一直遇到错误。有没有帮助?

0
0 Comments

JSONP是一种在客户端和服务器之间进行数据交互的方法,它允许客户端通过在URL中传递参数和回调函数的方式来请求服务器的数据,并将服务器返回的数据以脚本的形式返回给客户端。下面是一个简单的示例来解释JSONP的工作原理:

1. 客户端创建一个script元素,其中的src属性指向服务器的URL,比如:<script src="http://example.com/foo.js>。这会导致浏览器从example.com获取foo.js文件。

2. 服务器接收到对foo.js的请求后,返回foo.js文件的内容给客户端。假设foo.js的内容只是一个简单的脚本alert(1)

3. 客户端获取到foo.js文件的内容后,将其作为脚本来执行,即执行alert(1)

这就是一个简单的JSONP的例子。通过在URL中传递参数,客户端可以向服务器请求特定的数据。例如:

1. 客户端可以发送带有参数的请求:<script src="http://example.com/foo.js?arg=123>

2. 服务器接收到带有参数的请求后,对参数进行处理,并返回相应的脚本内容给客户端。假设服务器将参数乘以2后返回:alert(246)

3. 客户端执行服务器返回的脚本,弹出246

通过这种方式,客户端可以获取到服务器处理后的数据,并进行相应的操作。

如果你想在客户端执行一个自定义的函数而不仅仅是弹出提示框,你需要指定一个客户端函数的名称作为参数。具体步骤如下:

1. 客户端定义一个名为myFunc的函数,比如:function myFunc(a) { alert(a) }

2. 客户端发送带有回调函数名和参数的请求:<script src="http://example.com/foo.js?callback=myFunc&arg=123>

3. 服务器接收到带有回调函数名和参数的请求后,将回调函数名作为在foo.js中调用的函数名,并返回相应的脚本内容给客户端。假设服务器返回的脚本内容为:myFunc(246)

4. 客户端执行myFunc(246)。在这里,我们指定myFunc函数只是弹出其参数,但你可以根据需要自定义函数的行为。

这就是JSONP的工作原理。客户端通过在URL中传递参数和回调函数的方式向服务器请求数据,服务器返回的是一个脚本而不是JSON数据。当然,返回的脚本内容中可以包含JSON数据,比如myFunc({ 'foo' : 5 }),但最终它只是脚本内容的一部分。

总结一下,JSONP是一种通过在URL中传递参数和回调函数的方式来进行跨域数据交互的方法。它允许客户端请求服务器的数据,并将服务器返回的数据以脚本的形式返回给客户端。通过指定回调函数,客户端可以对服务器返回的数据进行自定义处理。

0
0 Comments

JSONP是一种“hack”方法,让网站可以加载数据并忽略同源策略。它通过在页面上添加一个<script>标签来实现。使用jQuery,您可以在$.getJSON中的URL后面简单地添加?callback=?来进行JSONP调用。或者,您可以使用完整的$.ajax方法。相反,jQuery实际上会在您的页面上添加一个<script src="http://YourSite.com/path/to/json.php?callback=jQuery12345"></script>(注意:jQuery12345将被随机生成)。然后在您的服务器上,您需要用查询字符串中传递的callback函数响应一个有效的JavaScript文件。这就是全部内容。详见维基百科关于JSONP的页面。

0