运用jQuery的ajax方法实现跨域访问
前端页面测试代码如下:
<!DOCTYPE html> <html> <head> <style type="text/css"> .gridtable { font-family: verdana,arial,sans-serif; font-size:11px; color:#333333; border-width: 1px; border-color: #666666; border-collapse: collapse; } </style> <script src="http://code.jquery.com/jquery-1.10.2.min.js"> </script> <script> //首先跨域访问,须对方允许跨域访问。
//跨域访问时,如果未知对方返回函数,一般情况下我们须在访问连接里加入callback="xxx",指定接收返回函数名,这是我们需要设置jsonpCallBack:"xxx"。(方法二)
//如果我们自己写的前后台之间的访问,可以修改后台代码的情况时,可以使用jsonp属性,设置样式为,jsonp:"xxxx"。这时在后端服务器返回值时需要取出xxxx属性的值(jQuery自动生成的唯一的方法名)。(方法一)
//其中方法二,可以不使用success回调方法,在JS中定义一个名为xxxx的方法也可以作为回调方法!
//如下代码所示:
function testAjax() { var name = $("#username").val(); $.ajax({ type : "post", url:"xxxxxxxxxx",//正确访问的网址 data : { name :name }, dataType : "jsonp", //jsonp:跨域访问 json:是同源服务器访问 jsonp : "jsonpCallback",//方法一 //jsonpCallBack : "xxxx" ,//方法二
success : function(data) {
alert(data); } }); } function xxxx(result) {if (result == "testOK") { alert("Test success!"); $("#form").submit(); } else { alert(result); } } </script> </head> <body> <div align="center"> <h1>Test</h1> <form action="" id="form"> <table class="gridtable"> <tr><td>Name</td><td><input type="text" id="username" /></td></tr> <tr><td><input type="button" value="CONFIRM" onclick="testAjax();"/></td></tr> </table> </form> </div> </body> </html>
服务器端相应测试代码如下:
function test(request, response) { var name = request.getParameter("name");
var callBackMethod = ""; if (name == "test") { //response.write("jsonpCallback({msg:'ok'})");//方法名jsonpCallback随便起,不过前台取返回值的方法名应与该名相同 也可以用这个方法。
callBackMethod = request.getParameter("jsonpCallBack");//方法一
//callBackMethod = request.getParameter("callback");//方法二
response.write(callBackMethod+"('testOK')");//返回值
}
else
{
var errMsg = "错误测试"; response.write(callbackMethod+"('" + errMsg + "')");
} }
浙公网安备 33010602011771号