问题描述
- 使用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