最近想写一个在网页上自动做题的小工程,不知道如何把数据库和网页连接起来,最初想的方法是用websql把题库存到浏览器,然后做题时候用js边匹配边选择答案,但是题库有点大,当点了那个做题的网页后,websql的内容会消失,我很头疼,后来学了ajax,我就想用ajax在控制台里传出来问题,然后后台匹配答案并返回答案,发现了一个问题,ajax普通只能在一个域传输信息,跨域就不行了,后来看了好多方法,最后用jsonp的方法解决跨域问题,在这里写出jsonp的小demo:
$.ajax({
type: "get",
url:"http://localhost/ajax.php",
data:{name:'data'},
dataType: 'jsonp',
async: false,
success: function(data){
//
}
});
function callback(data) {
//在这里的data是返回来的json数据,用来接收
alert(data.con);
}
ajax.php
<?php
$callback = $_GET["callback"];
$recei = $_GET["name"];
$a = array(
'con'=> $recei,
);
$result = json_encode($a);
echo "callback($result)";
exit;
在这里运行方式是把php放在apache的目录下,用lamp或者wamp环境,上面的jquery程序可以在chrome控制台运行,注意要引入jquery的库。另外,jsonp要有回调函数,即callback函数,默认是这个,如果要定义别的,需”jsonpCallback :’func_name’”。这个demo返回的结果是’data’;
var jq = document.createElement('script');
jq.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(jq);
jQuery.noConflict();