当前位置: 首页 > 面试题库 >

使用JSONP对JSON文件进行跨域Ajax请求

齐迪
2023-03-14
问题内容

我想从domain2(example2.com)访问位于domain1(example.com)中的JSON文件。例如,

$.ajax({
    type:'get',
    url: 'http://example.com/vigneshmoha.json',
    success: function(data) {
        console.log(data);
    },
    statusCode: {
        404: function() {
            console.log('Status code: 404');
        }
    }
});

我想从其他网域(例如example2.com)向example.com提出这个Ajax请求。

我已经尝试过JSONP。我不明白它是如何工作的。有人可以解释其工作方式吗?


问题答案:

您的服务必须返回jsonp,这基本上是javascript代码。您需要从ajax请求中为服务提供回调函数,然后返回的是函数调用。

下面是一个工作示例。

ajax请求:

$.ajax({
            crossDomain: true,
            type:"GET",
            contentType: "application/json; charset=utf-8",
            async:false,
            url: "http://<your service url here>/HelloWorld?callback=?",
            data: {projectID:1},
            dataType: "jsonp",                
            jsonpCallback: 'fnsuccesscallback'
        });

服务器端代码返回jsonp(c#):

public void HelloWorld(int projectID,string callback)
    {

        String s = "Hello World !!";
        StringBuilder sb = new StringBuilder();
        JavaScriptSerializer js = new JavaScriptSerializer();
        sb.Append(callback + "(");
        sb.Append(js.Serialize(s));
        sb.Append(");");
        Context.Response.Clear();
        Context.Response.ContentType = "application/json";
        Context.Response.Write(sb.ToString());
        Context.Response.End();
    }


 类似资料:
  • 问题内容: 我想用以下代码用jquery ajax解析JSON数组数据: 我的JSON数据是: 但是我没有任何输出…任何人请帮忙… 问题答案: 概念解释 您是否正在尝试进行跨域AJAX调用?意思是,您的服务不在同一Web应用程序路径中托管吗?您的Web服务必须支持方法注入才能执行JSONP。 您的代码看起来不错,并且如果您的Web服务和Web应用程序托管在同一域中,则该代码应该可以正常工作。 当您

  • 本文向大家介绍AJAX跨域请求之JSONP获取JSON数据,包括了AJAX跨域请求之JSONP获取JSON数据的使用技巧和注意事项,需要的朋友参考一下 Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索。使用 XMLH

  • 本文向大家介绍通过jsonp获取json数据实现AJAX跨域请求,包括了通过jsonp获取json数据实现AJAX跨域请求的使用技巧和注意事项,需要的朋友参考一下 AJAX(异步的 JavaScript 和 XML)是用于创建快速动态网页的一种技术,它在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页,ajax 使用XMLHttpRequest对象在后台与服务器交换数据,XMLHttpR

  • 问题内容: 这是问题所在: 1.)我们在这里有页面… www.blah.com/mypage.html 2.)该页面要求这样的js文件www.foo.com … 3.)“ jsfile.js”使用Prototype向Ajax请求发回www.foo.com。 4.)ajax请求调用www.foo.com/blah.html。回调函数获取html响应并将其放入div中。 虽然这似乎不起作用,但我想它是

  • 问题内容: 使用ajax请求(ht | x)ml时,您只能将请求发送到同一域。但是,如果您请求JSON,则可以将其发送到任何域。为什么? 有人告诉我,这是出于安全性考虑,但为什么网站会通过Ajax进行恶意操作,而不是直接这样做(如果可行)。 问题答案: 查看此维基百科文章。 JSON之所以“安全”,是因为您必须通过回调传递它。远程站点将运行return JSON,并且您的JavaScript库不仅

  • 本文向大家介绍原生JS封装Ajax插件(同域、jsonp跨域),包括了原生JS封装Ajax插件(同域、jsonp跨域)的使用技巧和注意事项,需要的朋友参考一下 抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习。。。 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的。。。简单说说思路,如有不正确的地方,还望指正^_^ 一、Ajax核