function jsonp (url, params, callback) {
let funcName = 'jsonp'+Date.now()+Math.random().toString().substr(2,5);
if (typeof params === 'object') {
let tempArr = [];
for (key in params) {
let value = params[key];
tempArr.push(key+'='+value);
}
params = tempArr.join('&')
}
let script = document.createElement('script');
script.src = url + '?' +params + '&callback=' + funcName;
document.body.appendChild(script);
window[funcName] = function (data) {
callback(data);
delete window[funcName];
document.body.removeChild(script)
}
}
//服务端代码
<?php
//建立连接 @ 调用函数时候忽略错误
$mysqlconnect = @mysqli_connect('127.0.0.1','root','123123','android_db');
$newslist = mysqli_query($mysqlconnect,"select * from t_news");
while ($data = mysqli_fetch_assoc($newslist)) {
if(empty($data)){
return ;
}
$datas[] = $data;
}
if (empty($_GET['callback'])) {
header("Content-Type:text/json");
echo json_encode($datas);
exit();
}
// 一行代码搞定
//如果不想写jsonp 可以在服务端添加 header('Access-Control-Allow-Origin: *');代码 允许跨域请求
header("Content-Type:text/javascript");
$result = json_encode($datas);
echo "typeof {$_GET['callback']} == 'function'&&{$_GET['callback']}({$result})";
//释放结果集
mysqli_free_result($newslist);
//关闭连接
mysqli_close($mysqlconnect);
?>