gpt4 book ai didi

jquery - 测试静态 jsonp 响应

转载 作者:行者123 更新时间:2023-12-03 22:58:10 26 4
gpt4 key购买 nike

我在发出 jsonp 请求时没有遇到任何问题,但是我不确定是否设置 Web 服务以在 jsonp 中传递响应。

首先,服务器是否需要以某种方式配置以允许 jsonp 请求,或者页面只需要正确格式化响应?

在我的测试中,我收到了来自 geonames.org 的以下 jsonp 响应(我已将其放置在服务器/域 1 上的空白页面,没有其他任何内容):

<?php echo $_GET['callback'];?>({"postalcodes":[{"adminName2":"Westchester","adminCode2":"119","postalcode":"10504","adminCode1":"NY","countryCode":"US","lng":-73.700942,"placeName":"Armonk","lat":41.136002,"adminName1":"New York"}]});

在服务器/域 2 上,我发出以下请求:

$.ajax({
// works when I make the call to geonames.org instead of domain1
//url: 'http://www.geonames.org/postalCodeLookupJSON?postalcode=10504&country=US&callback=?',,
url: 'http://www.domain1.com/test/jsonp.php?callback=?',
success: function(data) {
$('#test').html(data);
},
});

当我将文件放在同一服务器(域 1 或 2)上并将其转换为常规 json 请求时,该调用有效。我做错了什么?

只是为了澄清:我的问题与接收请求的页面有关。我知道当我发送到 geonames.org、flickr 等 api 时该请求有效。但是,我正在尝试设置一个页面来发送响应。在我的示例中,我只有一个带有硬编码 jsonp 的空白页面。我不确定页面上是否必须有其他标题或在我的服务器上启用某些内容。

最佳答案

响应错误。

如果您有以下网址:http://www.mydomain.com/test/jsonp.php&callback=? jQuery 将用唯一的字符串替换 url 末尾的问号。在服务器端,您必须获取此字符串($_GET['callback'])并将其用作响应中的函数名称:

PHP 示例:

<?php
$object=array('postalcodes'
=>array(
array(
"adminName2" => "Westchester",
"adminCode2" => "119",
"postalcode" => "10504",
"adminCode1" => "NY",
"countryCode" => "US",
"lng" => -73.700942,
"placeName" => "Armonk",
"lat" => 41.136002,
"adminName1" => "New York"
)));

echo $_GET['callback'].'('.json_encode($object).')';
?>

收到响应后会发生什么? jQuery 知道唯一的字符串(假设 fx123456)。
jQuery 将使用 src 创建一个 <script> 元素: http://www.mydomain.com/test/jsonp.php&callback=fx123456 。 jQuery 将调用一个名为 fx123456() 的动态创建函数。该函数将返回 JSON(作为对象),该 JSON 将作为 $.ajax() 成功函数的数据参数。

因此,如果您不使用 jQuery 提供的回调参数作为响应中的函数名称,则 jQuery 不知道要调用的函数的名称(我最好说 jQuery 将调用一个不存在的函数) )。

关于jquery - 测试静态 jsonp 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4373419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com