写js时总是会遇到跨域请求的问题,现在了解了两种方法,记录之:
1)使用$.ajax,但是返回数据类型要设置为jsonp,示例:
$.ajax({ type: 'get', contenttype: application/json; charset=utf-8, url: http://localhost:8080/aqi/getcitylist.php, datatype: 'jsonp', headers: { accept: application/json, access-control-allow-origin: * }, crossdomain: true, async: false, jsonp: callback,//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback) jsonpcallback:success_jsonpcallback,//自定义的jsonp回调函数名称,默认为jquery自动生成的随机函数名 success:function(json){ getcitylistsuccess(json); }, error: function (data, textstatus, errorthrown) { console.log(error + ' ' + json.stringify(data) + textstatus + errorthrown); } });
php端的代码为:query($sql); $i=0; while ($row = $result->fetcharray(sqlite3_assoc)) { $resultarray[$i]=$row; $i++; } echo $callback.'('.json_encode($resultarray).')';?>
注意:1、ajax中要指定jsonp参数,然后后端要把回调函数名称写入到返回值中。我参考的博文是:http://www.cnblogs.com/xcxc/p/3729660.html
2)用$.getjson,这个函数就支持跨域调用。
$.getjson(http://localhost:8080/aqi/getcitylist.php,function(json){ getcitylistsuccess(json); });
但是后端代码(php)要加入:header(access-control-allow-origin:*);
不然会报错:no 'access-control-allow-origin' header is present on the requested resource. origin 'null' is therefore not allowed access.
我参考的博文是:http://blog.163.com/lvshutao@126/blog/static/164637467201442253942499/?latestblog
以上就介绍了$.ajax和$.getjson解决跨域请求,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。