使用jsonp完成跨域请求,但是请求的链接是js文件,请求总是那个js报错,怎莫办?

问题描述

使用jsonp完成跨域请求,但是请求的链接是js文件,请求总是那个js报错,怎莫办?

把链接换成php就没问题。

    $.ajax({
        type:'GET',
        async:false,
        url:"http://app.veishu.com/jsonp/categories/all.js",
        dataType:"jsonp",
        success:function(data){
            alert("success");
   //         alert(data[0]);
   //         var dataHtml=""
   //         for(var i=0; data.length;i++){
   //             dataHtml+="<li><a href='#' id=''></a></li>";
            }
            $(".list").html(dataHtml);

        },
        error:function(){
            alert("ajax is error");
        }
    });
    这个ajax不会进入error,也没有进入success。
    在那个链接的js那报错。
    如果把链接换成php会成功进入success。
    但这个js文件的链接直接在浏览器打开也没有问题,可以出现json。不知怎么回事?
    还有浏览器打开js文件有unicode字符,该怎么转![图片说明](http://img.ask.csdn.net/upload/201504/25/1429951452_561399.png)

解决方案

你的这个地址又不支持jsonp,jsonp是一段可以执行的js代码。。你的这个地址只返回数据,应该也是跨域的,无法获取这种数据。

如果这个地址是你的,你应该输出类似

 mycallback({"success":true,"data":[{"name":"u624bu5de5DIY","position":0,"slug":"handicraft"},{"name":"u8fd0u52a8u5065u8eab","position":0,"slug":"sport"},{"name":"u751fu6d3bu5bb6u5c45","position":0,"slug":"life"},{"name":"u6587u5316u6559u80b2","position":0,"slug":"cultural"},{"name":"u624du827au5a31u4e50","position":0,"slug":"entertainment"},{"name":"u7f8eu5986u9020u578b","position":0,"slug":"dress-up"},{"name":"u996eu98dfu5065u5eb7","position":0,"slug":"healthy-diet"},{"name":"u5b55u5987u80b2u513f","position":0,"slug":"pregnant-parenting"},{"name":"u517bu751fu4fddu5065","position":0,"slug":"health-preserving"}]})

的代码,mycallback回调函数你自己再你的html页面写好。。如果你的all.js是重写过的,可以$_GET["callback"]得到jquery注册的回调函数


$_GET["callback"]."(你的那串json数据)";

如果你不能控制,你只能在你站点做代理了,用curl获取远程输出数据,ajax请求你的这个代理php页面

解决方案二:

大哥,我正苦于这段接口不是我写的。没有callback,无从下手。
一见到跨域,我就想到是jsonp。痛苦一整天。
但是他用js写的。js文件直接在浏览器中打开就能看到代码内容,
难道他写死数据在js文件上?但我让他写的是从服务器查找的数据啊?
您帮我分析一下是不是他写错了?

解决方案三:

如果你认识写JS文件的程序,就让它加个CALLBACK,如果不认识,就用后台程序写个GET文件,再输出到相应页面,用本地JS去获取GET的数据,这样就不存在跨域问题了,除非是对方做了限制,不能让后台程序获取。

时间: 2024-09-19 20:22:18

使用jsonp完成跨域请求,但是请求的链接是js文件,请求总是那个js报错,怎莫办?的相关文章

Ajax的jsonp方式跨域获取数据的简单实例_AJAX相关

jsonp的调用,今天碰到了,正好整理了一下. <!DOCTYPE html> <html> <head> <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#b

Jsonp post 跨域方案_javascript技巧

近期在项目中遇到这样一问题,关于jsonp跨域问题,get传值是可以的,但post传值死活不行啊,于是网上看了一大堆关于这方面的资料,最终问题得以解决,今天抽空与大家分享下. 说明: http://www.t1.com/index.php 服务端URL 当然这是我本地配置的,需要改为自己对应的地址. 客户端代码: <script> $(function(){ var url = 'http://www.t1.com/index.php'; $.ajax({ type: 'post', url:

js中利用JSONP解决跨域问题

什么是跨域? 简单的来说,出于安全方面的考虑,javascript不能访问其他服务器上的内容,即"同源策略"(参考1,参考2).跨域就是通过某种手段绕过同源策略去访问不同服务器上的内容.只要域名.端口.协议任何一个不同,就是不同的域.协议或端口不同只能通过后端来解决. URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/

jsonp跨域 获取json-如何用jsonp实现跨域获取其他网页的json?

问题描述 如何用jsonp实现跨域获取其他网页的json? 如这个网址,如何使用jsonp获取这个网址的json? [http://et.xiamenair.com/xiamenair/book/findFlights.action?tripType=0&queryFlightInfo=XMN,PEK,2015-07-25] 解决方案 或者说有其他方法可以实现 解决方案二: $.ajax({ url : "http://et.xiamenair.com/xiamenair/book/fi

Ajax的jsonp方式跨域获取数据的简单实例

jsonp的调用,今天碰到了,正好整理了一下. <!DOCTYPE html> <html> <head> <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#b

利用JSONP实现跨域请求

前言:有时候一忙起来就没了时间观念,原来我已经有十多天没写博客了.一直想做跨域方面的尝试,无奈最近准备校招没时间动动手.今天就先讲讲JSONP吧,昨晚还在研究QQ空间日志里面网络图片的问题呢,我发现日志还提供了HTML模式,我们可以利用img标签的src属性实现跨域请求,从自己的服务器里提取动态内容. JSONP 在讲实现之前,我们先来看看何为JSONP.以下是维基百科的解释: JSONP or "JSON with padding" is a communication techni

来说说SpringMVC + JSONP的跨域请求

先来说说场景,JSON,这货大家应该都懂,不懂的请自动面壁思过,那么什么是JSONP,不是JSON放了个P就叫JSONP,而是JSON with Padding,在进行跨域请求的时候需要的数据,什么是跨域,打个比方:在user.weixin.com下的某个页面下,用户服务需要调用订单服务,请求order.weixin.com,那么在这两个二级域名下,请求是互斥的,如果请求就会报错.   先来看看本域下的请求,同域名下是可以获取到json数据的     那么如果换一个域名呢?可以看到请求被拒绝了,

使用Jsonp解决跨域数据访问问题

简介 符合Web2.0特征的众多网站一个明显的特点就是采用Ajax.Ajax提供了在后台提交请求访问数据的功能.其实现主要使用的是XMLHttpRequest函数,这个函数允许客户端的Javascript 发送到服务器端的HTTP请求并获得返回数据.Ajax同时也是目前众多的Mashup背后的驱动力量,他们都利用Ajax来聚合不同来源的信息. 理解同源策略的限制 同源策略是指阻止代码获得或者更改从另一个域名下获得的文件或者信息.也就是说我们的请求地址必须和当前网站的地指相同.同源策略通过隔离来实

浅析php中jsonp的跨域实例_php技巧

我们现在www.test.com这个域名下面有这么个html文件testjsonp.html: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtm