标签: jsonp

JSONP - 返回 HTML

我在代码中使用 JSONP:

<script>
$.ajax({
    url:"http://localhost:8080/pool/main/?pool=abcd",
    dataType: 'JSONP',
    success:function(response){
        $('#pool').append(response);
    },
    error:function(){
        alert("ERROR");
        },
});
</script>
Run Code Online (Sandbox Code Playgroud)

我必须使用 JSONP,因为我需要 ajax 跨域

在我的应用程序响应中,“ http://localhost:8080/pool/main/?pool=abcd” 是 HTML 代码。

我想在我的页面中显示此代码,但出现错误,因为我认为我无法返回 html。

错误 - 我的意思是 - 它为我生成了此代码error:function(){ alert("ERROR"); },但我在萤火虫中看到来自我的页面的响应http://localhost:8080/pool/main/?pool=abcd正常。但其次。我不知道如何将响应放入 html 元素。

我的问题是——我能还是不能。

如果我可以 - 如何做到这一点?

jquery jsonp

5
推荐指数
1
解决办法
7544
查看次数

如何从 JSON 转换为 JSONP?

我编写了以下代码以将 JSON 数据发送到前端。但是由于跨域安全问题,我们需要将其转换为 JSONP,有人可以建议我需要为此转换修改什么吗?

服务器端代码

JsonFactory jfactory = new JsonFactory();
         ObjectMapper mapper = new ObjectMapper();
         try {
                StringWriter stringWriter = new StringWriter();
                JsonGenerator jGenerator = jfactory.createJsonGenerator(stringWriter);
                jGenerator.useDefaultPrettyPrinter();
                jGenerator.writeStartObject(); // {
                jGenerator.writeStringField("title", title); // "title" : title
                jGenerator.writeStringField("Description", desc); // "desc" :
                jGenerator.writeFieldName("images");
                jGenerator.writeStartArray(); // [
                if(imageArray.size() != 0){
                for (String img : imageArray) {
                    jGenerator.writeString(img); // "msg 1"
                }
                }
                jGenerator.writeEndArray(); // ]
                jGenerator.writeEndObject(); // }
                jGenerator.close();
                response.getWriter().write(stringWriter.toString());
                System.out.println(stringWriter.toString());
                response.getWriter().close();
            } catch (IOException e) {
                // TODO Auto-generated catch block …
Run Code Online (Sandbox Code Playgroud)

java jquery json jsonp

5
推荐指数
1
解决办法
7587
查看次数

IE8 - IE10跨域JSONP cookie令人头疼

由于完全不受我控制的决定,我处于以下情况:

  • 我在catalog.org上有一个产品列表

  • 单击产品上的"添加到购物车"按钮会发出对Secure.com/product/add/[productKey的AJAX JSONP请求,这会将购物车记录保存到数据库,使用购物车ID设置cookie,然后返回true响应(如果失败则为false)

  • 回到catalog.org,如果响应为真,则向secure.com/cart/info发出另一个AJAX JSONP请求,请求读取购物车ID cookie,获取记录,并返回购物车中的商品数量

  • 再次返回catalog.org,读取响应并更新页面上的元素,显示购物车中的商品数量(如果有)

  • 此时,单击catalog.org上的"转到购物车"按钮会在secure.com上显示购物车摘要

这在Firefox 17,Chrome 32和IE 11中运行良好.它也适用于我们开发和测试环境中的IE8 - IE10,其中catalog.org是catalog.development.com,catalog.test.com和secure.com是安全的. development.com和secure.test.com分别.

但是,在我们部署到生产之后,这停止了在IE8 - IE10中工作.将产品添加到购物车后,购物车中的商品数量会在catalog.org上成功更新.然后,在单击catalog.org上的"转到购物车"按钮后,secure.com上的购物车摘要显示任何内容,因为它无法读取cookie.在IE开发人员工具中进入缓存>"查看cookie信息"显示没有购物车ID cookie.它应该存在,就像在其他浏览器和我们的开发和测试环境中一样.

我相信正在发生的事情是IE阻止第三方cookie.我们已经为secure.com上的所有请求添加了一个P3P精简策略标头,但cookie仍未设置.我们设置的标题是:

P3P: CP="CAO PSA OUR"
Run Code Online (Sandbox Code Playgroud)

为什么不在IE8-IE10中添加紧凑的策略头修复此问题?我怎样才能解决这个问题,以便在IE的所有版本中使用?

下面有几个好主意.我接受了@ sdecima's,因为它听起来最有希望.我们最终结合了其中的一些想法,但设法避免了XDomainRequest:

  • 单击产品上的"添加到购物车"按钮会发出对Secure.com/product/add/[productKey的AJAX JSONP请求,这会将购物车记录保存到数据库,使用购物车ID设置cookie,然后返回true响应(如果失败则为false)

我们在secure.com/product/add上更改了操作,以返回一个JSON对象,其中包含指示成功或失败的布尔值以及购物车ID.

  • 回到catalog.org,如果响应为真,则向secure.com/cart/info发出另一个AJAX JSONP请求,请求读取购物车ID cookie,获取记录,并返回购物车中的商品数量

我们更改了回调函数以检查响应对象中的两个属性.如果成功,并且存在购物车ID,我们会在页面上创建隐藏的iframe.srciframe 的属性设置为我们添加到secure.com的新端点.此操作接受购物车ID参数并保存购物车ID Cookie.我们不再需要在secure.com/product/add操作中保存cookie.

接下来,我们更改了secure.com/cart/info上的操作以接受购物车ID参数.此操作将使用购物车ID参数(如果存在)来获取购物车信息,否则它仍将尝试读取cookie.如果我们可以保证iframe已经完成加载并且cookie已经保存在secure.com上,那么这个额外的检查将是不必要的,但是由于浏览器安全限制,我们无法知道iframe何时在catalog.org上完成加载.

最后,CP="CAO PSA OUR"仍然需要P3P标头才能在IE7-IE10中工作.(是的,这也适用于IE7 :)

我们现在有一个解决方案(尽管是一个非常复杂的解决方案),用于保存和访问适用于所有主流浏览器的跨域cookie,至少在我们能够可靠测试的时候.

我们可能会对此进行一些重构.首先,此时对secure.com/cart/info的第二个AJAX JSONP请求是多余的,因为我们可以将原始请求中所需的所有信息返回到secure.com/product/add操作(更改的附带好处)该操作返回一个JSON对象 - 加上我们可以返回一条错误消息,指出如果出现错误则确切失败的原因).

javascript cookies ajax jsonp p3p

5
推荐指数
1
解决办法
4232
查看次数

我可以使用哪些免费和公共图像 JSON API 来测试 JSON 请求

我正在使用 AngularJS,并且想使用一些免费的 API 来获取一些图像。我正在查看 Flickr,但您需要注册一个应用程序才能使用它。我正在寻找可以在球棒右侧使用的东西。

http://www.jsontest.com/接近但无法获取任何图像。

api ajax json jsonp angularjs

5
推荐指数
2
解决办法
4万
查看次数

JSONP 响应被截断

我正在尝试在跨平台中使用 JSONP 响应。我正在使用 HTML 和 JQuery Mobile。有时,当记录数量较多时,响应会在固定字符数后自动被截断,不会读取 JSON 格式的完整响应。我无法得到完整的答复。然而,相同的响应对于 JSON 工作正常,并且可以在 Android 中轻松使用。

在跨平台应用程序中,在浏览器上,当我检查它被截断时,有人对此有想法吗?如果有人可以提供帮助,那将非常感激

更新

在 Apache Tomcat 上它工作正常,但对于 JBOSS 应用程序服务器我面临着问题。maxHttpHeaderSize 可能是一个问题吗?请告诉我 maxHttpHeaderSize 对此有什么影响..?

browser jquery jsonp web-services cross-platform

5
推荐指数
1
解决办法
452
查看次数

如何在纯js上编写JSONP Ajax请求?

$.ajax( { url : '', data: {}, dataType:'jsonp',  jsonpCallback: 'callbackName', type: 'post'
        ,success:function (data) {
        console.log('ok');
        },
        error:function () {
        console.log('error');
        }
        });
Run Code Online (Sandbox Code Playgroud)

如何在纯JS中编写相同的功能?

javascript ajax jsonp

5
推荐指数
2
解决办法
1万
查看次数

API 访问 Tesco 个人店内购物

是否有一种编程(读取 Pythonic 和/或 RESTful)方式来访问 Tesco Clubcard 个人历史记录和/或通过唯一的收据令牌进行店内购买?

从Tesco LabsTESCO API Documentation上的这个帖子来看,情况似乎并非如此

python jsonp restful-url

5
推荐指数
0
解决办法
730
查看次数

vue-resource和JSONP工作示例

我正在努力使用vue-resource制作JSONP请求.任何人都可以提供一些工作示例来演示定义jsonp回调的正确方法,在Vue组件中处理调用等等.

谢谢

**编辑:**对于其他人,让我们澄清一下情况.重点是什么 - 我在网站上有一个未经过身份验证的用户,我想让他做一些需要身份验证的操作(例如创建帖子).但是,在创建帖子的最后,我想向他显示登录模式窗口,让他使用社交oAuth提供程序登录并成功登录,让帖子获得批准等等.问题是这个从前端到不同域(社交提供商)的呼叫被阻止(CORS问题)并且我试图使用JSONP来克服障碍.试图设置JSONP调用花了我很多时间,最后我决定采用完全不同的方法:

在创建帖子的过程结束时,会创建一个cookie,关注信息所有必要细节中断的操作是什么.之后,显示登录模式.整个登录过程从服务器端完成,最后,当确认用户的身份时,重定向到初始页面.此外,检查cookie并根据数据,中断的操作继续成功执行,因为用户现在已经过身份验证.

@bryceadams再次感谢您的回答!

jsonp vue-resource

5
推荐指数
1
解决办法
4042
查看次数

如何通过 Retrofit 和 GsonConverter 处理 JSONP 响应?

我需要解析来自 Flickr API 的响应。
http://api.flickr.com/services/feeds/photos_public.gne?tagmode=any&format=json

它在 jsonFlickrFeed jQuery 回调函数中返回响应(这不是有效的 JSON 响应)。

我知道我们可以使用nojsoncallback=1查询删除 Flickr API 的 JSON 回调方法。

但是,如果强制使用 JSON with Padding (JSONP),是否有更好的方法来处理 JSONP 响应?

而不是将响应作为字符串获取,然后修剪 JSON 填充,然后解析剩余的 JSON 数据。

示例 Flickr API 响应 -

jsonFlickrFeed({
"title": "Recent Uploads tagged mountrainier",
"link": "http:\/\/www.flickr.com\/photos\/tags\/mountrainier\/",
"description": "",
"modified": "2016-12-15T16:56:42Z",
"generator": "http:\/\/www.flickr.com",
"items": [ {
    "title": "Gateway Arts District Open Studio Tour, December 10, 2016",
    "link": "http:\/\/www.flickr.com\/photos\/kimsworldofart\/31274762970\/",
    "media": {
        "m": "http:\/\/farm1.staticflickr.com\/381\/31274762970_c40599d623_m.jpg"
    },
    "date_taken": "2016-12-10T15:49:03-08:00",
    "description": " <p><a href=\"http:\/\/www.flickr.com\/people\/kimsworldofart\/\">kimsworldofart<\/a> posted a photo:<\/p> <p><a …
Run Code Online (Sandbox Code Playgroud)

android jsonp gson retrofit2

5
推荐指数
1
解决办法
1762
查看次数

Angular 4:JSONP注入脚本没有调用回调

我是Anguar4的新手,遇到了这个问题:

注入JSONP的脚本没有调用回调

我尝试了不同的API,例如:https: //jsonplaceholder.typicode.com/posts

但是,我的api给了我这个错误.但是,它适用于jQuery,jsonp.我在网上搜索了很多资源,花了很多时间,但无法修复它.这是我的代码:

import { Injectable } from '@angular/core';
import { Http, Headers, Jsonp, URLSearchParams } from '@angular/http';
import 'rxjs/add/operator/map';

@Injectable()
export class ServerService{

    constructor(private jsonp: Jsonp){}

    getServers(term: string) {
                let url = `url`; 
                let params = new URLSearchParams();
                params.set('search', term); // the user's search value
                params.set('action', 'opensearch');
                params.set('format', 'json');
                params.set('callback', 'JSONP_CALLBACK');
                return this.jsonp
               .get(url, { search: params })
               .subscribe(
                (data) => {
                    console.log(data);
                },
                (error) => {
                    console.log(error);
                });
    }

}
Run Code Online (Sandbox Code Playgroud)

jsonp angular

5
推荐指数
1
解决办法
4196
查看次数