把链接换成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字符,该怎么转
你的这个地址又不支持jsonp,jsonp是一段可以执行的js代码。。你的这个地址只返回数据,应该也是跨域的,无法获取这种数据。
如果这个地址是你的,你应该输出类似
mycallback({"success":true,"data":[{"name":"\u624b\u5de5DIY","position":0,"slug":"handicraft"},{"name":"\u8fd0\u52a8\u5065\u8eab","position":0,"slug":"sport"},{"name":"\u751f\u6d3b\u5bb6\u5c45","position":0,"slug":"life"},{"name":"\u6587\u5316\u6559\u80b2","position":0,"slug":"cultural"},{"name":"\u624d\u827a\u5a31\u4e50","position":0,"slug":"entertainment"},{"name":"\u7f8e\u5986\u9020\u578b","position":0,"slug":"dress-up"},{"name":"\u996e\u98df\u5065\u5eb7","position":0,"slug":"healthy-diet"},{"name":"\u5b55\u5987\u80b2\u513f","position":0,"slug":"pregnant-parenting"},{"name":"\u517b\u751f\u4fdd\u5065","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的数据,这样就不存在跨域问题了,除非是对方做了限制,不能让后台程序获取。